在32位应用程序中使用64位DLL

时间:2013-03-13 21:32:35

标签: c# interop 32bit-64bit

XCode的ARC重构强制我的Cocoa Library DLL为64位,我不知道我是否仍然可以从x86 C#应用程序中DllImport该DLL。这是可能的,这样做有什么后果吗?

3 个答案:

答案 0 :(得分:6)

您不能在一个进程中混合使用32位和64位代码。因此,使用混合位数代码的唯一方法是拥有多个进程。您需要某种形式的IPC来使其工作。您无法使用DllImport,因为它正在进行中。

答案 1 :(得分:0)

问题不在于C# - 它是操作系统中的托管过程。由于一个进程只能加载具有相同“位数”的DLL,因此进程为64位,或者您无法直接加载DLL。无论您使用何种语言或框架。

一个解决方案是将C#项目作为目标,使用“any”cpu或者特别指向X64。

另一种解决方案是创建一个托管流程,您可以使用IPC或类似模型进行通信。

答案 2 :(得分:0)

必要时,解决方案是在管道或类似设备中调用EXE。这当然假设是64位窗口。如果没有,请试试。