如何从“任何 CPU/64 位”生成项目调用 32 位非托管 DLL

本文关键字:调用 项目 位非 DLL 任何 CPU | 更新日期: 2023-09-27 18:34:22

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

如何解决此错误?

如何从“任何 CPU/64 位”生成项目调用 32 位非托管 DLL

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