您的位置:首页 > 编程语言 > C语言/C++

VS2005编译的C++项目在没有安装VS2005的机器上无法运行

2014-01-17 11:21 453 查看
最经在研究C语言调用Windows Api写Win32程序,编译器是VS2005(项目是C++ -> Win32),发现在一台未安装VS2005的机子上双击运行,会提示:



“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”。百度了一下,发觉很多人都有这个问题,有网友还提到“原来用VC6和VS2003的话,是会提示缺少“*.dll”,但是用VS2005却没有这样的提示”。



对于这个问题,综合网上的几种解决方法,现总结如下:



方法一:

在C:\Program Files\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件:

msvcm80d.dll

msvcp80d.dll

msvcr80d.dll

Microsoft.VC80.DebugCRT.manifest

把这几个文件拷贝到目标机器上,与运行程序同一文件夹或放到system32下,就可以运行那个程序了。其他release版,MFC程序什么的都是拷redist下相应文件夹下的文件就可以了,文件夹后都有标识!

这个方法经我的实践是没用的,估计是MFC的项目才有用。



方法二:

修改编译选项。原来,在VS2005里面编译的程序默认的配置是“多线程DLL”,其实也就是动态链接运行库的DLL,文件小,但需要客户机安装运行库。还有一个选项是“多线程”,这个选项就是静态链接运行库,文件大,优点是不需客户机安装运行库。

解决方式就是将/MD或/MDd 改为 /MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就不再需要VC的dll了。

这种方法较通用,但生成的文件会比较大,所以对小程序比较适合。



方法三:

设定MFC的静态编译。

打开工程属性,配置属性->常规->MFC的使用,选择“在静态库中使用mfc”。

这个方法仅适合调用MFC的程序,像我这样直接调用Windows Api的Win32项目用这种方法是不行的。



方法四:

客户机上安装vc运行库分法包,文件名为vcredist_x86.exe,或者到C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86里面的文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐