以下行在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)
答案 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。