19

我在通过 Visual Studio 2013 编译我的项目时遇到问题。我收到此链接器错误:

LINK : fatal error LNK1104: cannot open file 'nafxcwd.lib'

根据这个页面,我必须在共享库中使用 MFC。但我根本不使用 MFC。我所有的库和主项目都是使用设置
编译的。Use Standard Windows Libraries仅当我尝试通过 Visual Studio 2013 工具链构建项目时才会出现此问题,但它使用 Visual Studio 2010 工具链成功构建。

PS 项目已从 Visual Studio 6.0 移至 Visual Studio 2013。

4

4 回答 4

3

正如微软页面所说,微软 Visual C++ 6.0 标准版似乎不支持与 MFC 库的静态链接。但在 Visual Studio 2013 中,您可以静态链接 Microsoft Libraries 。检查此链接https://support.microsoft.com/en-us/kb/243458以解决您的问题。

来自微软网站:

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

  1. 从项目菜单中,单击设置。
  2. 在设置组合框中,选择所有配置。单击常规选项卡。如果它不可见,请使用选项卡滚动按钮向左滚动。
  3. 在 Microsoft 基础类组合框中,选择在共享 DLL 中使用 MFC。单击确定以保存更改。
于 2015-08-11T12:37:28.007 回答
0

要隔离消耗 MFC 的罪魁祸首,请与 /VERBOSE 链接并在输出中搜索 nafxcwd。很可能它会出现在 /DEFAULTLIB 指令之后——只需注意哪个库是在指令之前加载的。

于 2015-05-29T19:22:40.907 回答
0

通过更新一个根本不使用 MFC 的 VS 2008 项目,我遇到了同样的问题,并通过这三个步骤修复了它。请查看截图以了解突出显示的项目(VS 2008)的属性。

在此处输入图像描述

步骤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

第三步

现在打开“Project Properties -> General -> Project Defaults -> Character Set”并将值更改为Use Unicode Character Set,现在这部分需要更多的耐心和工作,您必须将字符串特征更改为 wchar_t 或 TCHAR你的源文件。

希望它能解决你的问题。

于 2016-03-17T08:27:01.923 回答
0

我遇到了同样的问题,除了它在一台机器上编译而不是另一台机器上编译。通过安装 Visual Studio 2013 的多字节 MFC 库解决,如:MBCS Error building MFC C++ project with Visual Studio

于 2018-04-17T12:24:18.243 回答