今天在给客户测试系统的时候,刚开始VC6写的EXE程序调用VS2005生成的DLL,没有问题,程序正常运行,当程序拿给专门的测试组做测试时,问题出现了,在干净的机器上运行程序时,程序异常,loadlibrary()失败,错误代码为14001,奇怪了,在其他机器上运行都挺好的,在刚装系统的机器上运行出问题了,赶紧做了干净的系统,运行,问题重现了。第一反应,肯定是缺少了什么问题了,可是用DEPENDS查看VS2005生成的dll的依赖项,缺少msvcr80.dll,马上复制过来,发现运行依旧。肯定是VS2005生成dll的时候,依赖某些项,回想起来,在用VS2005的生成应用程序安装的时候,需要安装Microsoft Visual C++ 2005 SP1 Redistributable Package (x86),包含了VS2005程序运行的一些dll和相应的manifest文件,安装之后,程序运行正常了。
另外,可以先查看生成的DLL的manifest文件,可以看到其中的依赖项,比如Microsoft.VC80.CRT以及相应的版本,可以在Windows的WinSxs找到相应的DLL和对应Manifests文件夹下的manifest文件复制到目标机器WinSxs文件夹对应的地方,运行程序即可。出现这个问题,就想到实验室的程序虽然可能技术上行通了,但是还是有很多问题需要解决,需要通过不断地测试,发现问题,积累经验。
(###)
联系客服