从C#中的C ++ DLL库调用导出的函数

时间:2017-03-17 10:42:51

标签: c# c++ dll

通过使用动态链接从C#调用C ++ DLL函数没有问题,但是当我尝试以动态方式创建它时遇到了问题:

尝试获取DLL处理程序:

var DLL = Assembly.LoadFile(@"C:\project\mydll.dll");

得到例外:

  

mscorlib.dll中出现未处理的“System.BadImageFormatException”类型异常

     

其他信息:该模块应包含一个程序集清单。 (HRESULT异常:0x80131018)

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

Assembly.LoadFile用于加载.NET程序集,它无法加载不包含程序集的DLL。

您需要使用PInvoke来访问DLL中的函数。此外,您需要确保导出函数的名称不会被破坏,因为几乎不可能弄清楚函数名称是什么,并且当使用不同版本的C ++编译器构建时名称可能会更改

答案 1 :(得分:0)

Assembly.LoadFile只应用于加载.NET程序集。纯Win32 dll无法以这种方式加载。

要在托管代码中加载Win32库,请使用LoadLibrary通过PInvoke Win32调用。