2012-10-29 76 views
0

我在C#中使用C++類庫和Windows應用程序。從C#中加載C++類庫(64位)

它適用於32位Windows,但不適用於64位Windows - BadImageFormatException發生。

我試圖改變C++類庫的平臺,但它不能從WIN32更改爲WIN64。

我認爲下列問題之一可以解決這個問題。

  1. 有沒有辦法將WIN32庫轉換成WIN64庫?
  2. 是否有另一種方法可以在不使用C++庫的情況下在C#上調用C++函數?
  3. 是否可以在64位應用程序中加載WIN32庫?
+2

除非您特別需要使用64位CLR,否則您可以編譯爲32位而不是AnyCPU。 WOW在x64 Windows上運行32位應用程序做得相當不錯。 –

+0

你是怎麼從你的C#代碼中調用C++庫的?你看過[PInvoke](http://msdn.microsoft.com/en-us/library/aa288468(v = vs.71).aspx)? –

回答

4

有沒有辦法將WIN32庫轉換成WIN64庫?

將庫重建(重新編譯)爲64位庫。

是否可以在64位應用程序中加載WIN32庫?

號從Programming Guide for 64-bit Windows

... 32位進程無法加載64位DLL用於執行,和64位進程無法加載32位DLL用於執行。

+0

如何將庫重建爲64位庫? – Yun

+0

我正在使用Visual Studio 2008,並且不能從Win32更改庫的平臺。 – Yun