2012-01-10 5 views
1

Я использую Visual Studio 2010 Premium. У меня есть два проекта A и B, и я пытаюсь скомпилировать их как на 64-битную платформу.
Проект A выводит .dll и .lib-файл, на который опирается проект B.
я уже успешно скомпилирован проекта А до 64-битной платформе, но при компиляции проекта BI получить следующее сообщение об ошибке:Неустранимая ошибка LNK1112: тип модуля типа «X86» конфликтует с типом целевой машины «x64»

mfcs100d.lib (nolib.obj): фатальный LNK1112 ошибки: модуль типа машины «X86 'конфликты с типом целевой машины' x64 '

В чем проблема? Я действительно не знаю, что это за файл mfcs100d.lib.
Я использовал «Dependency Walker» в файле dll проекта A и, похоже, полагался исключительно на 64-разрядные DLL-файлы. Кроме того, я перешел в Project B (Property Pages -> Configuration Properties -> Linker -> Advanced) и подтвердил, что для «Target Machine» установлено значение «MachineX64». Кроме того, в Configuration Manager платформа установлена ​​в x64.

Кто infromed мне, что проблема может быть такой:

Переход к проекту Б (Страницы свойств -> Конфигурация Свойства -> C \ C++ -> Preprocessor -> Preprocessor Определения) У меня есть следующие значения там:

WIN32 
_DEBUG 
_WINDOWS 
_AFXEXT 

Это действительно связано? Должен ли я заменить значение «WIN32»? если да, то как? Я не совсем понимаю смысл этих определений и как их изменить.

Редактировать: Я просто понял, что, вероятно, это не связано вообще. Это просто определения для препроцессора, такие как те, которые могут быть определены командой C++ #define. Но я мог ошибаться.

+0

Не избавляйтесь от WIN32, даже компилируя 64-битный код, это по-прежнему API Win32, поэтому вам необходимо определить WIN32. – jcopenha

ответ

5

Довольно сложно получить это неправильно. Начните с Build + Configuration Manager и дважды проверьте, что x64 выбран для обоих проектов. Следующий шаг - проверить путь поиска библиотеки. Щелкните правой кнопкой мыши проект, «Свойства», «Каталоги VC++», «Библиотечные каталоги». Нажмите стрелку со списком, чтобы просмотреть «Унаследованные значения». $ (VCInstallDir) atlmfc \ lib \ amd64 должен быть вторым в списке, здесь находится 64-разрядная версия mfcs100d.lib.

+0

Первое значение в списке - $ (VCInstallDir) bin \ x86_amd64 Второй бит $ (VCInstallDir). Как изменить 1-е значение на $ (VCInstallDir) atlmfc \ lib \ amd64? Похоже, я не могу переписать этот текст, и добавление нового элемента вызвало у меня ошибку. –

+0

Вы ищете неправильную настройку, посмотрите на * Библиотечные каталоги *, а не на исполняемые каталоги. –

+0

О да, прости. Да, здесь действительно написано значение $ (VCInstallDir) atlmfc \ lib \ amd64, поэтому я задаюсь вопросом, в чем проблема. –

2

Когда вы добавляете цель x64, перейдите в Общие настройки и посмотрите Output Directory и Intermediate Directory. Для целевого изменения отладки от «Отладка» до «Debug64», то же самое для цели Release.

+0

Можете ли вы добавить снимок экрана из этого, пожалуйста? –

Смежные вопросы

 Смежные вопросы