繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM