2010-04-01 62 views
3

我在32位XP操作系統上使用VS 2003 .Net。我還在我的機器上安裝了「Microsoft Platform SDK」。我可以構建針對64位操作系統的vC++應用程序(二進制文件)嗎?致命錯誤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): 跑到項目屬性 - >鏈接器 - >命令行 - >其他選項和去除的/ MACHINE:I386從鏈接器附加選項。

希望它有幫助

2

在VS2008中有同樣的問題。我的解決方案是更改位於Build - > Configuration Manager中的活動解決方案平臺,並使用x64和複製Win32中的設置創建新的解決方案平臺。這使我可以在我的64位操作系統中使用預先構建的32位庫。

2

對於64位Windows用戶:

今天我有同樣的問題,這裏是我如何解決它(在Visual Studio 2008):我去:

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

並添加/MACHINE:I364從鏈接器附加選項。

這對我來說很好。

+0

這也適用於我 – Vladimir 2013-10-18 06:05:33

0

出現此錯誤是因爲您構建的內容正在以錯誤的體系結構進行編譯(如果其他所有內容均爲x64,則稱爲x86二進制文件)。鏈接器恐慌,不知道該如何處理它,所以它打破了你的構建。 我可以說出你的問題,因爲你引用的錯誤信息是不完整的。它通常是這樣的:

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

當我嘗試在Visual Studio 2017中爲ARM64構建自定義庫時,遇到了上述錯誤。而且我的目標機器已經如預期的那樣是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中成功構建我的項目。

希望它會有用。

相關問題