Linker: невозможно открыть файл 'nafxcwd.lib'

У меня проблема с компиляцией моего проекта через visual studio 2013. Я получил эту ошибку компоновщика:

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

В соответствии с этой страницей я должен использовать MFC в общей библиотеке. Но я не использую MFC вообще.
Все мои библиотеки и основной проект скомпилированы с использованием настроек Use Standard Windows Libraries. Эта проблема возникает только тогда, когда я пытаюсь создать проект с помощью инструментальной линейки Visual Studio 2013, но он успешно создан с помощью инструментальной цепочки Visual Studio 2010.

P.S. проект был перенесен с Visual Studio 6.0 на Visual Studio 2013.

Ответ 1

Похоже, что в Microsoft Visual С++ 6.0 Standard Edition не поддерживает статическую связь с библиотеками MFC, как говорит на странице Microsoft. Но в Visual Studio 2013 вы можете связать статически с библиотеками Microsoft. Проверьте эту ссылку https://support.microsoft.com/en-us/kb/243458, чтобы решить вашу проблему.

С сайта Microsoft:

Чтобы изменить настройку проекта MFC для динамической связи с библиотеками MFC, выполните следующие действия: Откройте проект MFC.

  • В меню "Проект" выберите "Настройки".
  • В поле "Сопоставление параметров" выберите "Все конфигурации". Нажмите Общие. Если он не отображается, используйте кнопки прокрутки вкладки, чтобы прокрутите влево.
  • В поле со списком Microsoft Foundation Classes выберите Use MFC в Общая DLL. Нажмите "ОК", чтобы сохранить изменения.

Ответ 2

Просматривая проект VS 2008, который вообще не использовал MFC, я столкнулся с этой же проблемой и исправил это, выполнив эти три шага. Посмотрите снимок, чтобы взглянуть на свойства проекта (VS 2008).

введите описание изображения здесь

Шаг 1

Добавьте эту строку #define _AFXDLL в файл stdafx.h

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

#define _AFXDLL

Шаг 2

Перейдите к своему решению VS 2013 и откройте "Свойства проекта → C/С++ → Генерация кода → Библиотека времени выполнения" и измените значение на Многопоточную DLL (/MDd) отладки ( настройте свою конфигурацию выпуска на Многопоточную DLL (/MD), как только вы выполните эти два шага, вы начнете получать эту ошибку привязки

ошибка LNK1104: невозможно открыть файл 'mfc120d.lib'

Теперь здесь вы должны установить "Набор символов" для вашего проекта в Unicode вместо _MBCS

Шаг-3

Теперь откройте "Свойства проекта → Общие → Стандартные значения по умолчанию → Набор символов" и измените значение на Использовать набор символов Unicode, теперь эта часть требует немного больше терпения и работы, вы должны измените свои строковые черты на wchar_t или TCHAR в исходных файлах.

Надеюсь, что это решит вашу проблему.

Ответ 3

Чтобы изолировать виновника, который потребляет MFC, связывайтесь с /VERBOSE и выполняйте поиск вывода для nafxcwd. Скорее всего, он появится после директивы /DEFAULTLIB - просто отметьте, какая библиотека была загружена точно перед директивой.