我想爲以下平臺創建一個DLL(使用C#)。爲64位和32位環境創建DLL
- 32位機& 32位操作系統
- 64位機& 32位操作系統
- 64位計算機& 64位操作系統
在這種情況下應該是什麼平臺的目標,因爲我使用Visual Studio 2008.
請回復。
我想爲以下平臺創建一個DLL(使用C#)。爲64位和32位環境創建DLL
在這種情況下應該是什麼平臺的目標,因爲我使用Visual Studio 2008.
請回復。
除非您使用平臺調用特定的Win32 API函數,COM或第三方編譯的代碼,否則Any CPU
目標是好的。
在.NET中,目標平臺不會更改已編譯的中間語言,但它只是限制執行您的庫和可執行文件的位置的限制。
例如,如果您在Debug|x64
中編譯,那麼您的代碼在32位操作系統中將不可執行。
總結:編譯Debug|AnyCPU
,Release|AnyCPU
和您的軟件在任何操作系統和CPU架構的工作與C#(即[DllImport]
)訪問本機代碼的例外,你需要確保本地代碼訪問從32位或64位的進程取決於本機代碼的目標平臺。
創建的DLL在32位機器上的32位操作系統上工作正常。但在64位計算機上的64位操作系統上嘗試使用相同的錯誤消息時,我收到了以下錯誤消息。 **調用System .__ ComObject.DetectCardReader失敗,出現此消息:無法加載DLL'ACR120U.DLL':指定的模塊找不到。 (來自HRESULT的異常:0x8007007E)** – user724817
@ user724817因此您輸入我的答案的例外部分。然後,您需要在'Debug | x86'和'Debug | x64'中編譯並確保COM對象可用於32位和64位進程 –
我們將從Debug | x86和Debug | x64創建兩個不同的dll? ? – user724817
聽起來很像一套很好的要求。你能行的! – MickyD