我需要从 64 位进程调用omniORB 的 DLL,并且当我得到它时,我需要将这些 DLL 编译为 64 位。
omniORB 似乎一般支持 64 位,但没有包含用于 make-process (*.mk) 的配置文件......所以我想我必须创建自己的一个......
有人已经试过了吗?并且:在 64 位模式下运行 ORB 是否“容易”(假设有一种方法可以创建这些 DLL)还是我现在没有想到的其他陷阱?:)
提前致谢!
我需要从 64 位进程调用omniORB 的 DLL,并且当我得到它时,我需要将这些 DLL 编译为 64 位。
omniORB 似乎一般支持 64 位,但没有包含用于 make-process (*.mk) 的配置文件......所以我想我必须创建自己的一个......
有人已经试过了吗?并且:在 64 位模式下运行 ORB 是否“容易”(假设有一种方法可以创建这些 DLL)还是我现在没有想到的其他陷阱?:)
提前致谢!
最近我为 MSVC 2010 x64 编译了omniORB 4.1.2。我按照omniORB的说明做了一些小的修改:
下载omniORB-4.1.2.tar.gz(只有源,没有omnipython和预编译库)到一个目录并解压。
安装适用于x64的 Python (例如 c:\python27)。将 c:\python27 添加到 PATH 环境变量。请注意,omnipython 不起作用,因为它是在 32 位模式下编译的。
安装 cygwin(例如 c:\cygwin)。将 c:\cygwin\bin 添加到 PATH 环境变量。
在 omniORB\mk\platforms 创建 x86_win64_vs_10.mk(只需复制 x86_win32_vs_9.mk 的内容),然后稍微修改一下内容:
PYTHON = /cygdrive/c/Python27/python
# Use the following set of flags to build and use multithreaded DLLs
#
MSVC_DLL_CXXNODEBUGFLAGS = -MD -EHs -GS -GR -Zi -nologo
MSVC_DLL_CXXLINKNODEBUGOPTIONS = -nologo -manifest -DEBUG -MACHINE:X64
MSVC_DLL_CNODEBUGFLAGS = -MD -GS -GR -Zi -nologo
MSVC_DLL_CLINKNODEBUGOPTIONS = -nologo -manifest -DEBUG -MACHINE:X64
#
MSVC_DLL_CXXDEBUGFLAGS = -MDd -EHs -RTC1 -GS -GR -Zi -nologo
MSVC_DLL_CXXLINKDEBUGOPTIONS = -nologo -manifest -DEBUG -MACHINE:X64
MSVC_DLL_CDEBUGFLAGS = -MDd -RTC1 -GS -GR -Zd -Zi -nologo
MSVC_DLL_CLINKDEBUGOPTIONS = -nologo -manifest -DEBUG -MACHINE:X64
#
# Or
#
# Use the following set of flags to build and use multithread static libraries
#
MSVC_STATICLIB_CXXNODEBUGFLAGS = -MD -EHs -GS -GR -Zi -nologo
MSVC_STATICLIB_CXXLINKNODEBUGOPTIONS = -nologo -manifest -DEBUG -MACHINE:X64
MSVC_STATICLIB_CNODEBUGFLAGS = -MD -GS -GR -Zi -nologo
MSVC_STATICLIB_CLINKNODEBUGOPTIONS = -nologo -manifest -DEBUG -MACHINE:X64
MSVC_STATICLIB_CXXDEBUGFLAGS = -MDd -EHs -RTC1 -GS -GR -Zi -nologo
MSVC_STATICLIB_CXXLINKDEBUGOPTIONS = -nologo -manifest -DEBUG -MACHINE:X64
MSVC_STATICLIB_CDEBUGFLAGS = -MDd -RTC1 -GS -GR -Zi -nologo
MSVC_STATICLIB_CLINKDEBUGOPTIONS = -nologo -manifest -DEBUG -MACHINE:X64
在 omniORB\config\config.mk 添加行platform = x86_win64_vs_10
并注释掉所有其他平台
打开“Visual Studio x64 Win64 命令提示符”,cd 到 omniORB\src,执行make export
我希望这些信息会有所帮助
在 2018 年 1 月 30 日,omniORB 维护者 Duncan Grisby 回复了omniORB 用户邮件列表上的帖子“Windows 64 位构建问题”:
不要在 Stackoverflow 上遵循随机的古老答案。
如果你想构建一个 64 位的 omniORB,你必须有一个 64 位的 Python。阅读 README.win32.txt。完全按照它说的去做。这就是我所做的,而且效果很好。
在 omniORB 4.1.7 README.win32.txt line#50中,有这样的指导:“请注意,虽然有很多“win32”的引用,但一切都适用于 64 位 Windows 平台。没有单独的“win64”平台营造环境。”
有一个标题为“从源文件构建omniORB”的部分