针对在Visual Studio 中生成的exe不能在没安装Visual Studio 机器上运行的问题、、
解决方法在vs下选择项目-属性-配置属性-c/c++-代码生成-运行时库----修改编译选项,将/MD或/MDd 改为 /MT或/MTd。
下面就分析为什么这么做、、、
(不好意思今天截图传不上,就先不上图了)
有六种类型的可重用的库:
- 静态单线程库(调试/释放)
- 静态多线程库(调试/释放)
- 动态链接库(DLL)(调试/释放)
请注意每个库都有一个调试版本和发行版本。DLL是多线程安全和单线程版本的CRT库不提供的DLL。如果的可重复使用的库或库中的任何用户正在使用多个线程,然后库需要1多线程的安全库类型。 注意调试库和编译器开关/ MLD,/ MTD,和/ MDD是只在Visual可用ç+ +版本4.0和更高版本。 下表应建立可重用的库(DLL类型是多线程安全)的六种类型中的每个使用编译器开关。任何使用可重复使用的库的项目,应使用相同的编译器开关。使用/ ML(默认)/ MLD /吨/ MTD /医师或/ MDd编译器开关时,编译器将对象文件的默认库名(图书馆“栏下所列)。
可重用的库开关图书馆宏(S) -------------------------------------------------- -------------- 单线程/ML LIBC的(无)、
静态多线程/MT LIBCMT的_MT
动态链接(DLL)/MD MSVCRT _MT和_DLL
调试单线程/ MLD LIBCD的了_DEBUG
调试静态多线程/ MTD LIBCMTD _DEBUG和_MT
调试动态链接(DLL)/ MDD MSVCRTD _DEBUG,_MT和_DLL
来自http://support.microsoft.com/kb/140584/en-us
4看过这些,就知道是动态库的原因,由于对方机器没有这里所包含的动态链接文件,那么我们就可以选择将其编
译到静态库中,具体做法如下:
在vs下选择项目-属性-配置属性-c/c++-代码生成-运行时库----修改编译选项,将/MD或/MDd 改为 /MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就不 再需要VC的dll了。
这时再将relese下的exe放在别的没装vs的机器下就能运行了。。。。。。
本文讨论了在Visual Studio中编译的exe文件无法在未安装Visual Studio的计算机上运行的问题。主要原因是生成的exe依赖于特定版本的多线程库。为了解决这个问题,文章提到了六种不同类型的库,包括静态单线程和多线程库,以及动态链接库(DLL)。关键在于选择正确的编译器开关,如/MLD、/MTD等,确保生成的库是多线程安全的,并且与其他使用该库的项目保持一致。


被折叠的 条评论
为什么被折叠?



