好久没有用VC2005编写MFC了,结果这几天用了下碰到几个问题i:
1:与字符串(比如CString,CFile::Open)有关操作时,char* 不能使用
简单解决办法,project>properties>configuration properties-->General-->Character set选择非unciode
2:静态链接MFC.DLL时,出现链接错误:
__cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMTD.lib
........
解决办法:
go to project>properties>configuration properties>linker>input
add to "Additional dependency" -> Nafxcwd.lib Libcmtd.lib
add to "ignore specific library" -> Nafxcwd.lib;Libcmtd.lib
order of libraries is important( Nafxcwd.lib;Libcmtd.lib).
3:如果拷贝.EXE到其它非VS环境机器时,会说配置不对,此时:
在C:/Program Files/Microsoft Visual Studio 8/VC/redi
st/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT 下找到了下列文件:
msvcm80d.dll
msvcp80d.dll
msvcr80d.dll
Microsoft.VC80.DebugCRT.manifest
把这几个文件拷贝到目标机器上,与运行程序同一文件夹或放到system32下,就可以运行那个程序了。
其他release版,MFC程序什么的都是拷redist下相应文件夹下的文件就可以了,文件夹后都有标识!
方法二:
修改编译选项,将/MD或/MDd 改为 /MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就不再需要VC的dll了。
方法三:
工程-》属性-》配置属性-》常规-》MFC的使用,选择"在静态库中使用mfc"
这样生成的exe文件应该就可以在其他机器上跑了。
以下为vs2008解决方法(Csdn上的得分回复):http://topic.csdn.net/u/20090920/23/aa36a092-e30f-4c2b-8cc5-783a8feafdf4.html
------------------------------------------------------------------------------------------------------------------------------
如果你的是MFC程序,直接在 项目 - 属性 - 配置属性 - 常规 - MFC的使用 - 在静态库中使用MFC即可
如果你的是非MFC程序,则在 项目 - 属性 - 配置属性 - C/C++ - 代码生成 - 运行库 - 选择“多线程”或者“多线程调试”即可
---------------------------------------今天重新用了另外一种方法,肯定是可以的------------------------
编译为release版本,然后采用共享程序集的方式来部署,安装vcredist.exe (Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)
即编译好release版本,然后让用户安装vcredist.exe,就可直接运行了