如何从"任何CPU / 64位"中调用32位非托管DLL建立项目?

时间:2014-12-16 22:45:26

标签: c# dll 32bit-64bit unmanaged

我必须从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本身。

如何解决此错误?

1 个答案:

答案 0 :(得分:1)

如果您无法将项目更改为x86,则无法直接调用32位DLL。您必须创建一个调用DLL的32位进程,然后使用某些进程间通信在64位进程和32位主机处理之间进行通信。