链接器:无法打开文件'nafxcwd.lib'

时间:2014-06-28 15:38:00

标签: c++ mfc linker visual-studio-2013 visual-studio-6

我在通过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。

4 个答案:

答案 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以解决您的问题。

来自Microsoft网站:

要将MFC项目设置更改为动态链接到MFC库,请执行以下步骤: 打开你的MFC项目。

  1. 从“项目”菜单中,单击“设置”。
  2. 在“设置为”组合框中,选择“所有配置”。点击 常规选项卡。如果看不到,请使用标签滚动按钮 滚动到左边。
  3. 在“Microsoft基础类”组合框中,选择“在...中使用MFC” 共享DLL。单击“确定”保存更改。

答案 1 :(得分:0)

通过更新完全不使用MFC的VS 2008项目,我遇到了同样的问题并修复了这三个步骤。请参阅镜头,了解项目属性(VS 2008)的重点。

enter image description here

步骤-1

请在stdafx.h文件中添加此行#define _AFXDLL

#define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers

#define _AFXDLL

步骤-2

转到VS 2013解决方案并打开“项目属性 - > C / C ++ - >代码生成 - >运行时库”并将值更改为多线程调试DLL(/ MDd)(将您的发布配置调整为多线程DLL(/ MD),一旦完成这两个步骤,您将开始收到此链接错误

  

错误LNK1104:无法打开文件'mfc120d.lib'

现在,您必须将项目的“字符集”设置为Unicode而不是_MBCS

步骤-3

现在打开“项目属性 - >常规 - >项目默认值 - >字符集”并将值更改为使用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指令之后 - 只需注意在指令之前加载了哪个库。