2011-01-18 43 views
1

昨天我問了這個同樣的基本問題,但還沒有足夠清楚地瞭解這個問題。基本上,這是錯誤建立我的應用程序時,我現在得到:從Visual Studio 2008編譯和鏈接32位程序

\調試\ HotSync.obj:致命錯誤LNK1112:模塊機型「64」與目標機器類型衝突「X86」

我承擔這意味着我正在編譯64位對象模塊,然後嘗試鏈接32位可執行文件。那麼這是編譯器本身的問題,還是編譯器的一個選項?這個項目以前是一個VC++ 2003項目,所以一直都是32位的。

我可能會提到,我能找到的唯一版本的cl.exe位於VC \ bin的amd64和x86-amd64子目錄中。我必須手動將這些路徑之一添加到「VC++目錄」列表中,但結果對於任何一個都是相同的。

我的主機電腦是運行Windows 7 64位的AMD,但我希望我仍然可以構建將在XP上運行的程序。有人知道怎麼做嗎?

回答

2

的Visual Studio 2008的默認安裝應該把在x86 cl.exe和相關的編譯的二進制文件:

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\ 

一個Win7的x64系統上。

如果您在那裏沒有cl.exe(即位於amd64x86_amd64x86_amd64目錄之上),那麼您可能需要考慮重新安裝Visual Studio。

請注意,amd64目錄中的編譯器以x64系統爲目標,並且其本身構建爲可在x64系統上運行。 x86_amd64目錄中的編譯器也以x64系統爲目標,但它本身就是x86二進制文件(即,它從x86 32位系統交叉編譯爲x64)。

你也應該有一個捷徑在Visual Studio 2008程序組中(或任何可能在Win7被稱爲):

"Microsoft Visual Studio 2008" | "Visual Studio Tools" | "Visual Studio 2008 Command Prompt" 

打開,最初說,一個命令行窗口:

Setting environment for using Microsoft Visual Studio 2008 x86 tools. 

和運行cl命令有沒有選項應該這樣說:

微軟(R)32位C/C++爲80x86優化編譯器版本15.00.21022.08

再次 - 如果這些都不適合您,則需要重新安裝。

另外,請確保構建中涉及的所有項目的項目配置都設置爲Win32而不是x64。

+0

我希望這不是因爲我有VS 2008「Standard」而不是「Pro」,但我得到的印象是,因爲我將它安裝在64位Win7 Professional上系統,它不會安裝用於創建32位應用程序的組件。該產品的設置幾乎沒有自定義選項,因此很難準確地確定它正在做什麼。我會嘗試重新安裝它,看看會發生什麼。 – gordonwd 2011-01-19 02:28:28

+0

@gordonwd任何消息? – alcor 2012-08-28 09:32:02

1

顯然,「問題」是我只安裝了C++,因爲這就是我打算使用的所有東西。但出於某種原因,我只需要將cl.exe安裝爲C#安裝的一部分。所以去figger!通過不進行全面安裝來爲我節省空間而爲我服務。

相關問題