注册 登录
编程论坛 C++教室

如何编译就不在需要DLL文件

八画小子 发布于 2011-09-22 22:57, 3475 次点击
用VS2010编写了程序,但如果拿到别的机器上,可能会需要MSVCR100.DLL文件。怎么能够不在依赖这个文件?我的意思是,我只给别人提供一个.EXE文件,别人就可以在自己的电脑上使用了。
5 回复
#2
xg56992011-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
tisyang2011-09-23 08:34
如果使用了 MFC的库,请在项目设置里选择静态链接,但是VC2010的程序都会依赖 2010版的 C运行库,如果没有这个运行库的话,貌似还是无法运行的。
#5
hellovfp2011-09-23 12:09
只要你的程序兼容其它编译器,换成codelite/codeblocks/c-free或是vc6编译一下,不管用静态还是动态链结,一个exe在多个win/pe操作系统下面可运行。
#6
xg56992011-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