我在通过visual studio 2013编译我的项目时遇到问题。我收到了这个链接器错误:
LINK : fatal error LNK1104: cannot open file 'nafxcwd.lib'
根据这个page,我必须在共享库中使用MFC。但我根本不使用MFC
我的所有库和主项目都使用Use Standard Windows Libraries
设置进行编译。仅当我尝试通过Visual Studio 2013工具链构建项目时才会出现此问题,但它已成功使用Visual Studio 2010工具链构建。
P.S。项目已从Visual Studio 6.0移至Visual Studio 2013。
答案 0 :(得分:3)
似乎在Microsoft Visual C ++ 6.0 Standard Edition中不支持静态链接MFC库,如Microsoft页面所示。但在Visual Studio 2013中,您可以将staticaly与Microsoft Libraries链接。请检查此链接https://support.microsoft.com/en-us/kb/243458以解决您的问题。
要将MFC项目设置更改为动态链接到MFC库,请执行以下步骤: 打开你的MFC项目。
答案 1 :(得分:0)
通过更新完全不使用MFC的VS 2008项目,我遇到了同样的问题并修复了这三个步骤。请参阅镜头,了解项目属性(VS 2008)的重点。
请在stdafx.h文件中添加此行#define _AFXDLL
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#define _AFXDLL
转到VS 2013解决方案并打开“项目属性 - > C / C ++ - >代码生成 - >运行时库”并将值更改为多线程调试DLL(/ MDd)(将您的发布配置调整为多线程DLL(/ MD),一旦完成这两个步骤,您将开始收到此链接错误
错误LNK1104:无法打开文件'mfc120d.lib'
现在,您必须将项目的“字符集”设置为Unicode而不是_MBCS
现在打开“项目属性 - >常规 - >项目默认值 - >字符集”并将值更改为使用Unicode字符集,现在这部分需要更多的耐心和工作,您必须将源字符串特征更改为源文件中的wchar_t或TCHAR。
希望它能解决你的问题。
答案 2 :(得分:0)
除了在一台机器上编译而在另一台机器上编译之外,我遇到了同样的问题。通过按照MBCS Error building MFC C++ project with Visual Studio
中的建议安装Visual Studio 2013的Multibyte MFC库来解决此问题答案 3 :(得分:-1)
要隔离消耗MFC的罪魁祸首,请链接/ VERBOSE并搜索nafxcwd的输出。很可能它会出现在/ DEFAULTLIB指令之后 - 只需注意在指令之前加载了哪个库。