我使用Visual Studio 2010 Premium。我有兩個項目A和B,我試圖編譯到64位平臺。
項目A輸出項目B依賴的.dll和.lib文件。
我已經成功編譯項目A到64位平臺,但是當我編譯項目BI收到以下錯誤:致命錯誤LNK1112:模塊機器類型'X86'與目標機器類型'x64'衝突
mfcs100d.lib(nolib.obj):致命錯誤LNK1112:模塊機型「X86 '與目標機器類型衝突'x64'
可能是什麼問題?我真的不知道這個mfcs100d.lib文件是什麼。
我已經在項目A的dll文件上使用了「Dependency Walker」,它似乎完全依賴於64位dll文件。 此外,我去了項目B的(屬性頁面 - >配置屬性 - >鏈接器 - >高級),並確認'Target Machine'設置爲「MachineX64」。 另外,在配置管理器上,平臺設置爲x64。
有人infromed我的問題可能是這樣的:
去項目B的(屬性頁 - >配置屬性 - > C^\ C++ - >預處理器 - >預處理定義),我有以下的值有:
WIN32
_DEBUG
_WINDOWS
_AFXEXT
那真的有關係嗎?我應該替換'WIN32'值嗎?如果是的話,那麼如何?我不太瞭解這些定義的含義以及如何改變它們。
編輯:我只是意識到,可能它根本就沒有關係。這些只是預處理器的定義,比如可以由C++ #define命令確定的定義。但我可能是錯的。
不要擺脫WIN32,即使編譯64位代碼,它仍然是Win32 API,所以你需要定義WIN32。 – jcopenha 2012-01-10 14:09:08