2012-06-01 66 views
1

每當我在Visual Studio 2010中創建一個新項目並且首先不設置特定平臺(在我的情況下是x64)時,我將無法完成後續更改。 所以我用外部庫(編譯爲x64)設置所有需要的東西,然後按編譯它顯然失敗,因爲兩個平臺不匹配。如何強制Visual Studio 2010使用x64?

sfml-graphics-s-d.lib(RenderStates.obj) : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'

注意到我使用Build-> Configuration-Manager-> Active projectplattform-> New ...-> x64將其更改爲x64。這就是我想要做的任何事情之前做同樣的事情,它的工作原理,但如果我這樣做之後,我得到了鏈接錯誤:

libcpmtd.lib(uncaught.obj) : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'

的* obj文件可以從項目更改到項目(如COUT。 obj),從我的理解中,Visual Studio選擇了x86標準庫,並且在切換平臺之後不會改變它的決定。

所以對於這個問題:我如何強制VS使用新的指定x64平臺 - 也用於標準庫?

注:創建一個新的配置設置爲目標機器將自動更改鏈接器設置:MachineX64 (/MACHINE:X64)

注:如果不知道它的相關性,但我靜態鏈接的運行時庫Multithreaded-Debug (/MTd)

+0

看起來像這個問題:http://stackoverflow.com/a/2850513/1262104 – Mesop

+0

我已經做了他們在那裏的建議,但鏈接器發現某處.obj文件編譯爲x86而不是x64。 – Lukas

+0

您確定*您正在使用x64 .libs嗎?在我看來,你正在嘗試使用x64可執行文件的x86庫。 – David

回答

2

如果有人會像我一樣遇到同樣的問題,他可以在the MSDN 'forum'找到討論和解決方案。

OK, I found it, LibraryPath corresponds to Library Directories property in VC++ Directories project property page. That explains what happened, that value is usually inherited so it changes automatically when you create add x64. But since you modified that value it is now local to the project and it simply gets copied when add x64... with all those x86 specific dirs.

I suppose it's simpler and safer to just add that lib dir in Linker\General\Additional Library Directories

+0

這是很好的盧卡斯,你可以用實際答案而不是鏈接編輯答案,這是爲了防止網址發生變化,或者網站發生故障或丟失線索。 (事實上​​發生了很多)。 –

+2

@DavidFreitas完成! :) – Lukas

0

盧卡斯上面的答案是正確的。但是,可能會有其他併發症。

如果更改庫目錄路徑不起作用,請確保您的vcxproj文件不是隻讀的,或者嘗試直接在vcxproj文件中編輯路徑。

使用VS Perforce加載項,更改庫目錄路徑和構建可能實際上不會保存您的項目文件,並且您不會收到文件是隻讀的警告,允許構建繼續執行舊的,設置不正確。

相關問題