故障原因:
可能与已安装的其他程序或应用程序存在冲突,可以卸载冲突软件或使用其他版本的C++
电脑环境出现其他问题,例如磁盘空间不足等,可进行清理或升级硬件。总之,要看具体情况进行排查解决问题。如果依然无法解决,可以请教专业的技术支持或IT人员
有时候,用VC++开发的程序在自己的系统上运行得好好的,但是一旦放到别的WIN系统上运行就失败,一般提示无法加载某个DLL或缺少什么运行时库。这个问题很多Windows的程序员都遇到过,我把常见的几个原因总结出来,希望对各位读者在解决类似问题时有用。
1. 程序依赖了某些动态库,而这些DLL不一定在其他系统中已安装,这是最常见的一个原因。如果你的程序是用MFC开发的,要特别注意一个工程设置的问题:编译生成可执行文件尽量用“在静态库中使用MFC库”,如果非得需要使用“在共享DLL中使用MFC”方式,则需要将程序依赖的DLL放到程序的目录中,或者在用户系统环境里安装一个对应你用的VC版本的运行时库。
2. 确定你依赖的DLL有没有用到一些函数在旧的系统中没有的接口。虽然VC对Windows各个版本的兼容性是很好的,但是现在VC有很多版本,从VC6.0,VC2003到VC2017,每个版本编译出来的二进制文件所依赖的DLL可能是不一样的,如果它依赖的DLL在别的系统中没有或者用到别的系统中没有导出的函数,则运行到其他系统就会出问题。要检查你的程序缺少了哪些运行时需要的DLL,可以使用工具Dependency Walker查看。
3. 编译程序时如果不需要调试信息,尽量将“生成调试信息”改成“否”,否则将程序移植到非开发环境的系统上很有可能因为有些DLL加载不到而失败,这个问题常见于用VC高版本(大于VC2008)编译的程序中。
4. 确定你的程序是否还需要支持XP系统,如果用到了VC2008以上编译的,需要加入一些宏以使程序兼容旧的平台:
#define
WINVER
_WIN32_WINNT_WINXP
#define
_WIN32_WINNT _WIN32_WINNT_WINXP
5. 尽量覆盖不同版本的系统,特别是要32位系统和64位系统上都跑一下。如果开发员开发所用的环境是32位系统,没有在64位系统上测试过,则放到64位系统上运行很有可能出问题。如果你的程序是编译成64位的,那就不需要考虑这个问题,只支持64位的系统就行了;如果你的程序是32位的,理论上可以在32位和64位的Windows系统中跑,这种情况下,程序员在做系统兼容性测试时,一定要至少覆盖到两种不同位数的系统。