5

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

4

3 回答 3

8

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

于 2013-03-13T21:39:02.233 回答
0

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

一种解决方案是将 C# 项目定位为使用“任何”cpu 或专门将其指向 X64。

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

于 2013-03-13T21:40:15.613 回答
0

必要时的解决方案是调用管道中的 EXE 或类似的。这当然假设一个 64 位窗口。如果没有,就踢吧。

于 2013-03-13T21:40:28.523 回答