2010-04-01 3 views
3

Я использую VS 2003 .Net на 32-разрядной ОС XP. Я также установил «Microsoft Platform SDK» на свою машину. Могу ли я создать приложение vC++ (двоичные файлы), предназначенное для 64-битной ОС?фатальная ошибка LNK1112: тип модуля типа «X86» конфликтует с типом целевой машины «AMD64»

Я использую следующие параметры проекта:

Name="VCLinkerTool" 
    AdditionalOptions="/machine:AMD64 bufferoverflowU.lib" 
    OutputFile="\bin\Release\MM64.dll" 
    LinkIncremental="1" 
    SuppressStartupBanner="TRUE" 
    AdditionalLibraryDirectories=""C:\Program Files\Microsoft Platform SDK\Lib\AMD64"" 
    GenerateDebugInformation="TRUE" 
    ProgramDatabaseFile="\bin\Release\MM64.pdb" 
    GenerateMapFile="TRUE" 
    MapFileName="\bin\Release\MM64.map" 
    MapExports="TRUE" 
    MapLines="TRUE" 
    OptimizeReferences="2" 
    EnableCOMDATFolding="2" 
    ImportLibrary=".\Release/MM64.lib" 
    TargetMachine="0"/> 

Я получаю следующее сообщение об ошибке:

fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'AMD64' 

мне нужно сделать, чтобы создать проект на 64-битных ОС или мне нужно изменить параметры проекта для решения эта ошибка. Пожалуйста, помогите мне решить эту проблему.

ответ

9

У меня была такая же проблема сегодня, вот как я ее решил (в Visual Studio 2008): Пошел в Project Properties -> Linker -> Командная строка -> Дополнительные параметры и удалены в/MACHINE: I386 от дополнительные возможности компоновщика.

Надеюсь, это поможет

2

Имея ту же проблему в VS2008. Мое решение состояло в том, чтобы сменить платформу активного решения, расположенную в Build -> Configuration Manager, и создать новую платформу решений с помощью x64 и сопоставить настройки с Win32. Это позволило мне использовать 32-битные библиотеки pre-build в моей 64-битной ОС.

2

Для 64-битной Windows:

У меня была такая же проблема сегодня, вот как я ее решил (в Visual Studio 2008): Я пошел:

Project Properties -> Linker -> Command Line -> Additional Options 

и добавил /MACHINE:I364 от дополнительные параметры компоновщика.

Это сработало для меня.

+0

Это тоже работало для меня – Vladimir

0

Эта ошибка возникает из-за того, что что-то в вашей сборке компилируется в неправильной архитектуре (например, как x86 двоичный код, когда все остальное - x64). Компилятор паникует и не знает, что с ним делать, поэтому он разбивает вашу сборку. Я могу говорить о вашей проблеме, потому что сообщение об ошибке, которое вы цитируете, является неполным. Обычно это идет что-то вроде этого:

SOME_KIND_OF_OBJECT.obj: fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'AMD64' 

Вы смотрите на имя файла OBJ, и вы увидите корень вашей проблемы там. Независимо от того, что указатель obj будет иметь какой-то аналоговый код исходного кода с тем же именем. Посмотрите на это и посмотрите, как он компилируется. Обычно все это происходит автоматически в VS, но иногда есть специальные шаги сборки, которые были добавлены разработчиком. Осмотрите пользовательские, предварительные и последующие события, чтобы увидеть, используется ли инструмент x86 для его сборки. Лист свойств в VS2010 + будет специфичным для obj и платформы, чтобы вы могли проверять библиотеки, используемые для проверки того, что они не являются 32-битными.

1

Я столкнулся с ошибкой, когда пытался создать свою собственную библиотеку для ARM64 в Visual Studio 2017. И моя целевая машина была уже ARM64, как и ожидалось.

По-видимому, проблема была в компиляторе ARM64, который не был установлен (хотя я мог запустить сборку в ARM64). Я установил его, запустив установщик Visual Studio Individual Components -> Visual C++ compiler and libraries for ARM64

Далее я получил error MSB8022: Compiling Desktop applications for the ARM platform is not supported.
Она была решена путем добавления

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration"> 
    ... 
    <PlatformToolset>v141</PlatformToolset> 
    <WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support> 
</PropertyGroup> 

в мой файл проекта. После всего, что я смог, я смог построить свой проект в ARM64.

Надеюсь, это будет полезно.

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

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