在 Windows 64 计算机上运行 Data Synapse Win32 DLL 网格节点?
我们正在用 C# 开发一个 Data Synapse 计算节点进程,需要 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。
We are developing a Data Synapse calc node process in C# that requires functionality in a Win32 DLL. We have no problems building this.
The question is it has to run on a Windows 64 bit system, with Data Synapse 5.1 Grid APIs for Windows 64. While Windows 64 will run most processes transparently using WOW we don't know that Data Synapse's 64 bit will in some way stop this from working?
Anyone done this?
8 Jun 2009: Update.
when we try to run a win32 service on the win64 grid we run into problems because on Win64 the grid code intrastructure runs as 64 bit Java. This java calls our service using a win64 JINI call to our service which is implemented as a DLL. Unfortunately as a Win32 DLL.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您希望您的 C# 代码作为 .NET 服务运行吗? .NET 服务在进程内运行,据我所知,无法在单个进程中混合 32 位和 64 位代码。
我看到两种解决方案
1) 运行 32 位 DataSynapse 引擎或
2) 在代理 32 位进程中运行 C# 代码。 使用某种形式的 IPC 在引擎进程和代理进程中运行的一些存根代码之间进行通信。
我相信 DataSynapse 已经为 C/C++ 代码构建了这个基础设施,称为 IsolateService。 要使用 IsolateService,需要在远程端开发一个简单的 C->.NET 桥,或者开发一个 .NET 可执行包装器来托管 .NET dll 并处理 COM。
内森
Do you want your C# code to run as a .NET service? .NET Services run in-process and as far as I know, there is no way of mixing 32bit and 64bit code within a single process.
I see two solutions
1) Run 32bit DataSynapse engines OR
2) Run the C# code in a surrogate 32bit process. Use some form of IPC to communicate between some stub code running in the engine process and the surrogate process.
I believe this infrastructure has already been built by DataSynapse for C/C++ code and is called IsolateService. To use IsolateService a simple C->.NET bridge would need to be developed on the remote end or a .NET executable wrapper developed to host the .NET dll and handle COMs.
Nathan
也许你可以在 win64 机器上安装并运行 win32 引擎,在这种情况下,一切都在 WOW 中。
Maybe you can install and run a win32 engine at the win64 machine, in that case everything is in WOW.
如果您尝试在 win64 计算机上安装 win32 引擎,请确保您安装的管理器也使用 32 位 JDK Java(查找环境变量 JAVA_HOME)。
因此,为了在 64 位机器上运行 32 位,您必须有 32 位 Java JDK,并且必须安装 DataSynapse 管理器并指向 32 位 Java 机器(安装管理器时, JAVA_HOME 变量应该指向 32 位版本)。
If you try to install a win32 engine on a win64 machine, make sure that your installed manager is ALSO USING a 32 bits JDK Java (look for the environment variable JAVA_HOME).
So, in order to have a 32-bit running on a 64-bit machine, you must have a 32-bit Java JDK, and the DataSynapse manager must have been installed pointing to the 32-bit Java machine (when installing the manager, the JAVA_HOME variable should be pointing to the 32-bit version).