2015-09-04 79 views
-3

我想爲以下平臺創建一個DLL(使用C#)。爲64位和32位環境創建DLL

  1. 32位機& 32位操作系統
  2. 64位機& 32位操作系統
  3. 64位計算機& 64位操作系統

在這種情況下應該是什麼平臺的目標,因爲我使用Visual Studio 2008.

請回復。

+0

聽起來很像一套很好的要求。你能行的! – MickyD

回答

1

除非您使用平臺調用特定的Win32 API函數,COM或第三方編譯的代碼,否則Any CPU目標是好的。

在.NET中,目標平臺不會更改已編譯的中間語言,但它只是限制執行您的庫和可執行文件的位置的限制。

例如,如果您在Debug|x64中編譯,那麼您的代碼在32位操作系統中將不可執行。

總結:編譯Debug|AnyCPURelease|AnyCPU和您的軟件在任何操作系統和CPU架構的工作與C#(即[DllImport])訪問本機代碼的例外,你需要確保本地代碼訪問從32位或64位的進程取決於本機代碼的目標平臺。

+0

創建的DLL在32位機器上的32位操作系統上工作正常。但在64位計算機上的64位操作系統上嘗試使用相同的錯誤消息時,我收到了以下錯誤消息。 **調用System .__ ComObject.DetectCardReader失敗,出現此消息:無法加載DLL'ACR120U.DLL':指定的模塊找不到。 (來自HRESULT的異常:0x8007007E)** – user724817

+0

@ user724817因此您輸入我的答案的例外部分。然後,您需要在'Debug | x86'和'Debug | x64'中編譯並確保COM對象可用於32位和64位進程 –

+0

我們將從Debug | x86和Debug | x64創建兩個不同的dll? ? – user724817