编程论坛
注册
登录
编程论坛
→
C++教室
如何编译就不在需要DLL文件
八画小子
发布于 2011-09-22 22:57, 3475 次点击
用VS2010编写了程序,但如果拿到别的机器上,可能会需要MSVCR100.DLL文件。怎么能够不在依赖这个文件?我的意思是,我只给别人提供一个.EXE文件,别人就可以在自己的电脑上使用了。
5 回复
#2
xg5699
2011-09-22 23:11
你是用Debug生成的? Debug生成的东西是这样的,你用Release编译一般情况都没问题,如果不行就试试
在程序编译前配置VS2010
2010里 项目->属性->配置属性->C/C++-代码生成->运行库->多线程 (/MT)
编译完就一个程序,放到哪都可以运行。
[
本帖最后由 xg5699 于 2011-9-22 23:28 编辑
]
#3
八画小子
2011-09-23 01:31
Release生成的,主要是依赖MSVCR100.dll,别人的机子上可能会没有
#4
tisyang
2011-09-23 08:34
如果使用了 MFC的库,请在项目设置里选择静态链接,但是VC2010的程序都会依赖 2010版的 C运行库,如果没有这个运行库的话,貌似还是无法运行的。
#5
hellovfp
2011-09-23 12:09
只要你的程序兼容其它编译器,换成codelite/codeblocks/c-free或是vc6编译一下,不管用静态还是动态链结,一个exe在多个win/pe操作系统下面可运行。
#6
xg5699
2011-09-23 12:40
回复 3楼 八画小子
使用vs2010编译出来的EXE应用程序在别的机子上运行时会提示找不到MSVCR100.dll,这该怎么解决呢?
一、在运行程序的计算机上安装vc2010运行库(很好的办法呀)
说明:这种方法需要用户自己去安装,一般适用于大型程序,小程序不建议使用。
二、在应用程序同目录上附带MSVCR100.DLL文件
说明:这种方法适用于一些小项目,无需用户另外安装程序。
点我下载msvcr100.dll
三、在程序编译前配置VS2010
项目->属性->配置属性->C/C++-代码生成->运行库->多线程 (/MT)
说明:这种方法应该对于一些程序来说最实用,仅需一个程序,放到哪都可以运行。
/MT意思就是静态编译VC运行库,静态了之后就不会再依赖MSVCR100.DLL或者MSVCR80.DLL(使用VS2005)了。
附带说明:
MSVCR80.DLL是vs2005编译器默认的库
MSVCR90.DLL是vs2008
MSVCR100.DLL是vs2010的
1