我必须从C#WinForms项目中调用来自外部提供程序的32位非托管DLL。
但是我必须将我的C#项目构建为“任何CPU”以利用64位计算机上更大的内存。
因此,当我尝试从运行64位的计算机调用32位DLL时,出现此错误:
BadImageFormatException : An attempt was made to load a program with an incorrect format
将构建更改为目标x86不是我们的选择。
我们没有能力修改外部DLL本身。
如何解决此错误?
答案 0 :(得分:1)
如果您无法将项目更改为x86,则无法直接调用32位DLL。您必须创建一个调用DLL的32位进程,然后使用某些进程间通信在64位进程和32位主机处理之间进行通信。