將我的32位VC++的dll轉換爲64位在我的32位環境?
你當然可以使用32位系統編譯爲64位系統的代碼,如果你有可用的64位編譯器(Visual Studio中的某些版本的某些版本不包含64位編譯器等等)。由於您可以將目標平臺設置爲x64並編譯您的代碼,因此聽起來您可以使用編譯器。
如果您在32位系統上編譯,測試和調試將會更加困難。顯然你必須在x64系統上運行你的測試,所以現在你不得不使用遠程調試器。
是否有辦法讓我可以爲VC++項目設置平臺 也可以像「任何CPU」一樣?
這對於本地C++來說並不合適。一個本地代碼DLL絕對是一個32位或64位的代碼文件。託管代碼可以支持「任何CPU」,因爲JIT負責將IL編譯爲實際的平臺操作代碼,因此它可以根據需要轉換爲x86或x64。
的VC++項目並沒有獲得建造
使用生成菜單的配置管理命令來檢查您的構建配置。您可能會發現該配置有一個用於x64平臺的VC++ Dll項目的條目,但未選中Build複選框。
致命錯誤LNK1112:與目標 機型的x64模塊機型X86衝突
鏈接器會提醒您爲鏈接文件的目標是64位(這是你想要的),但輸入到鏈接器的模塊(文件)是爲x86構建的,因此它與該目標發生衝突。你做什麼來解決這個問題取決於模塊是什麼。
如果你通過編譯你的項目的cpp文件創建的obj文件得到這個錯誤,那麼問題是你的項目正在爲x86而不是x64編譯該cpp文件。
更可能是因爲鏈接到項目的LIB文件(或其他文件)而出現此錯誤 - 例如來自某個SDK的LIB文件。在這種情況下,修復程序可能會更改項目屬性,以便使用正確的(即x64)LIB文件。一些SDK爲32位和64位版本的LIB文件使用不同的文件名。其他人爲LIB文件使用相同的名稱,但將x86和x64版本存儲在不同的目錄中。
一個開始尋找的好地方是Project |屬性|鏈接。在常規選項卡上有一個「其他庫目錄」字段。那裏的任何條目都應該指向x86和x64平臺的不同目錄(除非使用特定的目錄來保存x86和x64文件)。在Input選項卡上有一個「Additional Dependencies」字段。那裏的任何條目都應該對所有平臺都是相同的(除非使用不同的文件名來區分x86和x64文件)。
另一個需要檢查的地方是Tools |選項|項目和解決方案| VC++目錄。這些設置列出了搜索特定類型文件的各種目錄。每個平臺都有單獨的列表。在你的情況下,你想要檢查「庫文件」列表。對於x64平臺,您希望確保「庫文件」列出包含x64版本庫文件的指定目錄。
如果您沒有要測試的64位機器,請不要嘗試移植到64位。 – bdonlan