OmniORB 编译错误 Windows 7 64 位

Posted

技术标签:

【中文标题】OmniORB 编译错误 Windows 7 64 位【英文标题】:OmniORB compilation error Windows 7 64 bit 【发布时间】:2014-04-25 06:51:37 【问题描述】:

有没有人在编译omniORB_4.1.6 64-bit for windows时遇到以下错误? 'RegQueryValueEx 失败 - 错误 109'

我按照 readme.win32 中的过程进行操作,但在omniDynamic、代码集等中出现链接错误。因此有人建议重建omniorb_root/src/tools/win32 并将其复制到bin/x86_win32/ 中。这就是我所做的,当我重新编译整个omniORB时,错误如下:

../../../../bin/x86_win32/omkdepend -D__cplusplus -D_MSC_VER -DIDLMODULE_VERSION
="0x2630" -DMSDOS -DOMNIIDL_EXECUTABLE -Ic:/python27/include -Ic:/python27/PC -I
c:/python27/include/python2.7 -DPYTHON_INCLUDE=<Python.h> -I. -I. -I../../../../
include -D__WIN32__ -D_WIN32_WINNT=0x0501 -D__x86__ -D__NT__ -D__OSVERSION__=4 -
D_CRT_SECURE_NO_DEPRECATE=1 idlc.cc idlpython.cc idlfixed.cc idlconfig.cc idldum
p.cc idlvalidate.cc idlast.cc idlexpr.cc idlscope.cc idlrepoId.cc idltype.cc idl
util.cc idlerr.cc lex.yy.cc y.tab.cc
RegQueryValueEx failed - error 109
-----------------------------------------------------------------------------------------------
make[4]: Entering directory `/cygdrive/c/Software/COTS/omniORB/omniORB_4.1.6/src
/tool/omniidl/cxx/cccp'
../../../../../bin/x86_win32/clwrapper -gnuwin32 -c -O2 -MD -GS -GR -Zi -nologo
-DHAVE_CONFIG_H -I. -I. -I. -I../../../../../include -D__WIN32__ -D_WIN32_WINNT=
0x0501 -D__x86__ -D__NT__ -D__OSVERSION__=4 -D_CRT_SECURE_NO_DEPRECATE=1 -Focexp
.o cexp.c
RegQueryValueEx failed - error 109

【问题讨论】:

【参考方案1】:

我将回答我自己的问题,因为似乎没有人遇到过这个问题,而且邮件列表是如此安静。

有人建议我重新编译 src\tools\win32。这就是我所做的,我将生成的 .exe 文件复制到 bin\x86_win32。 然后我编译了所有的 omniORB 并得到 RegQueryValueEx 错误。

原因是当你在 void GetMounts(void) 函数中检查 src\tools\win32\bccwrapper.c 时, 它在注册表中查找此路径: Software\Cygnus Solutions\CYGWIN.DLL setup\b15.0\mounts\%02X。

当我使用 regedit 检查时,我注意到在 mounts->00、01、02、03 等键中,这些键中没有“unix”和“native”字符串值。 所以我决定删除所有的键,只保留 00 并添加一个 'unix' 和 'native' 字符串值。 之后,我重新编译了src\tools\win32并将创建的.exe文件复制到bin\x86_win32,最后当我重新编译所有omniOrb时,它开始编译(也需要复制ssl库)并成功完成。

我什至不知道以下内容是如何进入我的注册表的: Software\Cygnus Solutions\CYGWIN.DLL setup\b15.0\mounts\%02X。

最好的问候, 标记

【讨论】:

【参考方案2】:

我花了很多时间尝试在 Windows 10 上使用 Visual Studio 2017 编译 OmniORB。

假设 Cygwin64 安装在目录中

c:\software\cygwin64

,OmniORB 的编译非常简单:

打开命令终端(cmd) 在该终端中,设置 Visual 环境:

“C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat”x64

然后,追加 PATH(是追加而不是前置):

设置 PATH=%PATH%;c:\software\cygwin64\bin

然后,在文件 config\config.mk 中,取消注释此行

平台 = x86_win32_vs_15

在文件平台\x86_win32_vs_15 中,将 PYTHON 设置为以 python 可执行文件为目标,在我的例子中是 Python 3.6.5

PYTHON = /cygdrive/c/software/Python/python

最后用 make 开始编译:

导出

希望这会有所帮助。

【讨论】:

以上是关于OmniORB 编译错误 Windows 7 64 位的主要内容,如果未能解决你的问题,请参考以下文章

Python:在Windows64(Windows 7)环境下安装OmniOrbpy

如何在 Windows 10 上安装omniORB 和omniORBpy?

使用 Perl64 在 Windows 7(64 位)上构建 BerkeleyDB 时出现编译/链接错误

webRTC编译windows 7 64位

无法在 Windows 7 64 位上使用 stlsoft-1.9.124 编译 pantheios 1.0.0-beta216

如何编译 32 位程序并在 Windows 7 等 64 位操作系统上运行?