※ 引述《prjryu (再努力一點)》之銘言:
: 各位大大,最近在開發程式上遇到關於專案開發平台的選擇與dll使用上的問題
: 我目前幫忙開發的這隻程式前人在開發的時候平台一直是選用 Any CPU
: 手上拿到了廠商給的dll檔在x64的作業系統會跳出dll error說目標平台不對
: 若選用x86的平台build就可以用,但程式平台不能改,廠商也沒有x64的dll
: 找到的解法只說改平台成x86就能用,但我很擔心影響原本程式裡的功能,
: 請問有沒有人知道平台選用從Any CPU改為x86是否會影響原本for x64的dll功能?
: 有文獻解說這一部分嗎?
: 我一直查找不到,關於x86 x64 AnyCPU平台選用與x86 x64 dll的關係,
: 請版上大大幫幫忙,指點指點! 感恩~
CLR via C# TABLE 1-2
/platform選項 輸出類型 x86Windows x64Windows ARMWindowsRT IA64Windows
AnyCPU PE32/agnostic 32bit 64bit 32bit 64bit
AnyCPU PE32/agnostic 32bit Wow64(32bit) 32bit WoW64(32bit)
(prefer32bit)
x86 PE32/x86 32bit Wow64(32bit) 不執行 WoW64(32bit)
x64 PE32+/x64 不執行 64bit 不執行 不執行
ARM PE32/ARM 不執行 不執行 32bit 不執行
Itanium PE32+/Itanium 不執行 不執行 不執行 64bit
如果你的 Native dll 不是32/64合一
而是32 64分開的話 必須載入正確的版本才能運作
而要載入哪一個版本 取決於你的專案輸出類型與執行的作業系統是哪個