从C#调用C ++ .dll会引发运行时错误

时间:2010-08-02 19:10:34

标签: c# .net dllimport dll

以下行在C#GUI中生成运行时错误:

int x = myclass.number_from_dll();

我正在使用Microsoft Visual Studio 2008。

C#中的代码是:

class myclass
{
  [DllImport("strat_gr_dll.dll", EntryPoint = "number_from_dll")]
  public static extern int number_from_dll();
}

C ++ .dll中的代码是:

// This is an example of an exported function.

DLL int number_from_dll(void)
{
  return 42;
}

.NET的运行时错误是:

An attempt was made to load a program with an incorrect format.
(Exception from HRESULT: 0x8007000B)

1 个答案:

答案 0 :(得分:4)

Project + Properties,Build选项卡,Platform Target = x86。

您的C / C ++ DLL是以32位模式编译的。但是您的C#程序在64位版本的Windows上运行,并且将以64位模式运行。那种混合不匹配。创建64位版本的DLL是另一种解决方案。 Build + Configuration Manager,Platform combo,New,x64。