在程序开发中,经常要进行调试。在普通的exe程序调试中,有输出窗口一般问题不大。动态库(DLL)的调试,就稍显曲折。
在Windows中调试DLL,可以借助Rundll32.exe程序。关于如何用rundll32调试DLL,网上资料很多,这里就不再描述。
现在,我们要解决的问题是调试时出现“找不到指定模块”异常该怎么去解决?
“找不到指定模块”?到底是缺什么模块?我们可以借助分析DLL中API的工具(如Dependency Walker),来看看要调试的动态库引用了哪些其他的动态库。
假如,我们要调试的动态库是SFNHK.DLL那么它需要两个其他动态库的支持:WINMM.DLL 和 KERNEL32.DLL。如果其中任何一个DLL不在SFNHK.DLL可连接范围内时,就会出现“找不到指定模块”的异常。
解决方法:把相关联但不在可连接范围内的动态库都复制到当前调试动态库的同一路径下,再重新调试,就可以完美解决上面的异常了。