问题:VS2010 c++编写的程序在别人的机子运行不了,缺少mfc100u.dll xxx100d.dll等的解决方法
解决方法有两种:
1.将这些dll打包,和应用程序一起发布;
2.采用MFC静态编译;
附1:VS2010中静态编译设置方法
使用VS2010编译的程序在windows xp中运行时 经常会出现找不到 相关的DLL文件,我们可以使用静态编译的方法把这些运
行依赖文件打包到*.exe中来,以减少对环境的依赖。
一般可以配置一下两项:
1.项目 -> 配置属性->常规->MFC的使用 :在静态库中使用MFC。
2.项目 -> 配置属性->C/C++->代码生成->运行库 :选择/MT。
如果只配置了1,没配置2,会报错
error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
附2:
那么应用程序A也需要配置程序MT去编译,否则会报各种符号重复定义的错误。比如
错误 1 error LNK2005: _free 已经在 libcmtd.lib(dbgheap.obj) 中定义 MSVCRT.lib
错误 2 error LNK2005: _malloc 已经在 libcmtd.lib(dbgheap.obj) 中定义 MSVCRT.lib
参考
http://www.cnblogs.com/jifeng/archive/2011/06/24/2088872.html
http://www.cnblogs.com/kex1n/archive/2013/04/02/2995791.html
谢谢作者
当使用VS2010编译的C++程序在其他计算机上运行时,由于缺少如mfc100u.dll等依赖,导致无法正常执行。解决这个问题的方法包括将dll文件与程序一起打包或采用MFC静态编译。静态编译设置涉及在项目属性中将MFC设置为在静态库中使用,并将运行库设置为/MT。然而,静态编译可能引发链接错误如_free和_malloc已定义在不同库中。
886

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



