通过使用动态链接从C#调用C ++ DLL函数没有问题,但是当我尝试以动态方式创建它时遇到了问题:
尝试获取DLL处理程序:
var DLL = Assembly.LoadFile(@"C:\project\mydll.dll");
得到例外:
mscorlib.dll中出现未处理的“System.BadImageFormatException”类型异常
其他信息:该模块应包含一个程序集清单。 (HRESULT异常:0x80131018)
如何解决这个问题?
答案 0 :(得分:1)
Assembly.LoadFile用于加载.NET程序集,它无法加载不包含程序集的DLL。
您需要使用PInvoke来访问DLL中的函数。此外,您需要确保导出函数的名称不会被破坏,因为几乎不可能弄清楚函数名称是什么,并且当使用不同版本的C ++编译器构建时名称可能会更改
答案 1 :(得分:0)
Assembly.LoadFile
只应用于加载.NET程序集。纯Win32 dll无法以这种方式加载。
要在托管代码中加载Win32库,请使用LoadLibrary通过PInvoke Win32调用。