前一段工作中,由于不小心做了某一些操作后,工作开发维护的IE控件,在编译debug版本后,不像以前一样,在编译结束后,可以自动完成注册,而是弹出alert对话框,报LoadLibrary找不到指定的模块!
由于以前做同样编码工作时,是很正常地在debug版本编译后完成注册。当时,就觉得这里面一定有问题,而且问题还是可以解决的。但是,那段时间正好比较忙,没有潜心去解决这个问题。只是听一个同事说可能是控件编译所依赖的一个语音lib非debug版本。后来在闲下来后,就按照他说的方法把语音库的源码取下来,然后编译出来语音库的debug版本,最后放入控件的开发目录,依然是解决不了问题。
后来就想到不同是因为差异所带来的哲学观,遂就对比,那个同事和我自己控件DEBUG目录生成的文件,是否我的目录中的文件比他的少,或者多了一些东西,通过对比,几乎是一样,那原因何在呢?从表面上来看没有什么差异,到底是什么导致了这样一个差异呢?当时那个同事和我一样没有了头绪,不知道咋回事,就差一点建议我重装VC或操作系统了。
后来,记得在VC6.0工具箱里面提供的一个有用工具depends,可以看出一个dll或ocx,依赖那些模块。既然弹出对话框报找不到指定模块,那么通过这个工具看看这个控件依赖了一些什么东西,不就可以发现是什么找不到了?!想到办法就赶紧干,呵呵,把控件一拖到depends程序,细心下来,会看到一个所依赖的dll不像其他dll或库,被特殊地标记了黄色感叹号。从那个同事的目录拷贝来那个标记为黄色图标的dll,马上就可以正常注册了!!这个DLL是system32目录下的一个debug MFC的dll。
太兴奋了,太兴奋了,在兴奋之余也有感于平时要多学、多摸一些东西,才可以在不经意的时候,发现这个这些零星的点滴是多么的重要:)