今天在写代码的时候出现一个非常奇怪的错误。问题是这样的:
在一个EXE文件中load一个DLL文件,使用的方法是loadlibary,使用指定的DLL名称作为参数。
1。第一次调用LOADLIBARY,返回NULL,错误号是126,查询原因是找不到指定模块。
于是我到EXE所在的目录下找,文件在那里,我可以肯定的确认在那里,于是我重新编译工程,又实验了一次,结果是一样的。
我开始怀疑LoadLibary的问题,我发现这个目录下有其他DLL,然后将参数改为别的DLL,结果发现load成功。
于是我给哪个DLL改了一个名字,继续尝试,结果仍然失败。我开始怀疑DLL本身的问题,是不是入口的地方出错,但LOADLIBARY的返回说明不是这个原因,而且我也有TRACE在那边。
于是我急了,从别的地方复制一个我在别的工程调用成功的DLL到当前目录来,一调用,结果同样出错。
这下我可没有主意了,为什么原来成功的DLL结果不行了呢?
我又回到原来调用成功的工程中试验了一下,结果仍然成功。
然后我又调用EXE目录下的其他几个DLL,发现不是每个都成功。我觉得这个是一个不可思异的问题,晕啊。。。
无意中我用View dependencies打开了DLL,结果我看出了点问题,于是我一尝试,这下对了。
大家能猜到这是什么低级错误吗?
给自己长个记性。