Обновление VS2008 до VS2010 "не может открыть файл" mfc90d.lib "" - PullRequest
1 голос
/ 16 мая 2011

Я пытаюсь обновить проект Visual C ++ 2008 до проекта Visual C ++ 2010.Когда обновление было завершено и я вынудил его, я получил эту ошибку: фатальная ошибка LNK1104: не могу открыть файл 'mfc90d.lib'

Я думаю, что это должно ссылаться на "mfc100d.lib", я пытался много способовисправить это, но не удалось.

Кто-нибудь сталкивался с такой же проблемой?

Ответы [ 2 ]

7 голосов
/ 16 мая 2011

Возможные причины включают

a) Вы не перестраиваете все исходные файлы - попробуйте удалить все выходные данные obj и lib, чтобы быть уверенным б) Вы связываете стороннюю статическую библиотеку, которая была построена с VC9 - вам понадобится версия VC10 c) Ваши пути заголовков указывают на заголовки VC9 (проверьте параметры пути вашего решения) d) Ваш проект содержит явную ссылку на mfc90d по какой-то другой причине.

Следующий шаг диагностики: установите параметр / verbose на компоновщике и определите, какой объект перетаскивает в mfc90d.lib.

Martyn

1 голос
/ 24 мая 2013

Я обнаружил проблему с моим отсутствующим MFC100.dll, выполнив глобальный поиск всех моих исходных файлов по определению "_MFC_FILENAME_VER". Я нашел следующее определение в одном из моих заголовочных файлов:

#define _MFC_FILENAME_VER 100

который был использован в этом блоке:

#ifdef _DEBUG
#pragma comment(lib, "mfc" _MFC_FILENAME_VER "d.lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER "d.lib")
#else
#pragma comment(lib, "mfc" _MFC_FILENAME_VER ".lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER ".lib")
#endif

Я изменил его на:

#define _MFC_FILENAME_VER 110

, поэтому он будет компилироваться с версией MFC для VS 2012 (mfc110d.lib).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...