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 - просто отметьте, какая библиотека была загружена точно перед директивой.