Я использую 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. Но я мог ошибаться.
Не избавляйтесь от WIN32, даже компилируя 64-битный код, это по-прежнему API Win32, поэтому вам необходимо определить WIN32. – jcopenha