1. 问题的出现
编译好的程序在本机上运行OK,但发布到别人电脑上运行出现如下错误:
2. 分析原因
出现该问题,一般是由缺少什么库文件或者库文件不兼容导致的。我的开发环境为vs2008,并在程序发布时放入了vs2008的运行库(参考附件4.1)。编译另外一个测试程序,在一样的环境中运行,却没有问题。所以排除vs2008库的问题。
该问题可能出现在使用的库上,如果使用的Lib和其dll文件不一致也有可能导致该问题。我专门编写一个测试程序,测试使用的Lib文件。
特别注意:如果依赖的一个lib文件,如果不使用其方法,该lib文件会被忽略。
3. 解决问题
在测试程序中发现引用某一个库时,问题重现了。说明与该库有关,进一步分析是由于使用的lib文件与dll文件不一致导致的。 该库做过升级,我使用新的dll文件,但用了就的Lib库。问题重现,替换新的lib库重新编译即可。
4.附件
4.1 提取vs2008运行库
vs2008编译时如果使用/MD的形式生成,则需要vs2008运行库(关于/MT与/MD的区别请直接百度)。一种方式,我们可以安装vs的补丁,另一种方式,直接在可执行文件的同一目录中放入依赖的运行库。其运行库一般在vs的按照目录下的VC\redist,在该目录中的文件夹看其名就知道其意义,如果需要同时指出debug和release的程序,则将其子文件中的所有dll文件拷贝出来。
建议:安装everything文件搜索工具,如有该工具,直接输入redist即可找到vs的安装目录。
至于vs的其他环境,参考这个提取即可。
如有任何问题,请直接与我联系:[email protected]
时间: 2024-11-05 15:52:53