[英]Call exported functions from C++ DLL library in C#
我没有问题可以通过使用动态链接从C#调用C ++ DLL函数,但是当我尝试以动态方式创建它时遇到了问题:
尝试获取DLL处理程序:
var DLL = Assembly.LoadFile(@"C:\project\mydll.dll");
并得到例外:
mscorlib.dll中发生了'System.BadImageFormatException'类型的未处理异常
附加信息:该模块应包含程序集清单。 (来自HRESULT的异常:0x80131018)
如何解决这个问题呢?
Assembly.LoadFile用于加载.NET程序集,它无法加载不包含程序集的DLL。
您需要使用PInvoke来访问DLL中的函数。 另外,您还需要确保导出函数的名称没有被弄乱,因为几乎不可能弄清函数名称是什么,并且使用不同版本的C ++编译器构建时,名称可能会更改。
Assembly.LoadFile
应该仅用于加载.NET程序集。 纯Win32 dll无法以这种方式加载。
为了在托管代码中加载Win32库,请通过PInvoke使用LoadLibrary Win32调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.