首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

Rlease出的文件还要依赖本地的dll?解决方案

2012-05-24 
Rlease出的文件还要依赖本地的dll?前几天用VS2010写了个小游戏,在我电脑上调试良好,Realse后发给别人玩,可

Rlease出的文件还要依赖本地的dll?
前几天用VS2010写了个小游戏,
在我电脑上调试良好,
Realse后发给别人玩,
可对方打开后出错
提示:无法启动此程序,因为计算机中丢失MSVCP100.dll..
几经周折,他先后下载了该文件注册,以及装了.NET4
可都没有解决问题。
请问这是什么原因??你们有没遇过??
我就奇怪了,为何发布了的程序还依赖本地资源??
或者说还和环境有关??


[解决办法]
用VC,如果是纯的控制台程序,应该对MFC等dll没有依赖。如果用到了MFC,你需要是指编译选项,将MFC设为为静态链接,这样MFC的所有代码都编译到你的应用程序中,程序的体积会比较大。默认情况下,MFC为动态链接,生成的可执行文件比较小,但在运行是需要MFC的动态链接库。
[解决办法]
用depends.exe查看exe依赖的dll
[解决办法]
MSVCP100是c++运行库,比如你用了cout,string之类的
安装vc2010的可再发行组件包,或者从vc6,windows driver kit里面搞到msvcp60.lib,msvcrt.lib,这两个会让你的模块连接到msvcp60.dll和msvcrt.dll,这两个dll都是从vc6运行库提拔到系统dll的,msvcrt已成为knowndll,它们至少从winxp开始都有
[解决办法]
/MT编译
[解决办法]
这么纠结……就两个选择:
1. 用 /MT 编译: 工程上右键 -> Properties -> C/C++ -> Code Generation -> Runtime Library -> Multi-threaded (/MT)
2. 让你的用户安装对应版本的 vcredist (或者你自己做安装带进去)

热点排行