2012-10-29 32 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