0

我们正在用 C# 开发一个 Data Synapse calc 节点进程,该进程需要 Win32 DLL 中的功能。我们构建这个没有问题。

问题是它必须在 Windows 64 位系统上运行,带有适用于 Windows 64 的 Data Synapse 5.1 Grid API。虽然 Windows 64 将使用 WOW 透明地运行大多数进程,但我们不知道 Data Synapse 的 64 位会以某种方式阻止这种情况从工作?

有人做过吗?

2009 年 6 月 8 日:更新。当我们尝试在 win64 网格上运行 win32 服务时,我们遇到了问题,因为在 Win64 上,网格代码内部结构作为 64 位 Java 运行。这个 java 使用 win64 JINI 调用我们的服务来调用我们的服务,该服务被实现为 DLL。不幸的是作为一个 Win32 DLL。

4

3 回答 3

1

您希望您的 C# 代码作为 .NET 服务运行吗?.NET 服务在进程内运行,据我所知,无法在单个进程中混合 32 位和 64 位代码。

我看到两个解决方案

1) 运行 32 位 DataSynapse 引擎或 2) 在代理 32 位进程中运行 C# 代码。使用某种形式的 IPC 在引擎进程和代理进程中运行的一些存根代码之间进行通信。

我相信这个基础设施已经由 DataSynapse 为 C/C++ 代码构建,称为 IsolateService。要使用 IsolateService,需要在远程端开发一个简单的 C->.NET 桥接器,或者需要开发一个 .NET 可执行包装器来托管 .NET dll 并处理 COM。

弥敦道

于 2009-06-12T16:07:20.160 回答
0

也许你可以在 win64 机器上安装和运行一个 win32 引擎,在这种情况下,一切都在 WOW 中。

于 2009-06-13T02:03:28.650 回答
0

如果您尝试在 win64 机器上安装 win32 引擎,请确保您安装的管理器也使用 32 位 JDK Java(查找环境变量 JAVA_HOME)。

所以,为了在 64 位机器上运行 32 位,你必须有 32 位 Java JDK,并且 DataSynapse 管理器必须已经安装指向 32 位 Java 机器(安装管理器时, JAVA_HOME 变量应该指向 32 位版本)。

于 2012-07-09T10:48:08.037 回答