OmniORB ошибка компиляции Windows 7 64 бит
Кто-нибудь сталкивался с ошибкой ниже при компиляции omniORB_4.1.6 64-bit для windows? "Ошибка RegQueryValueEx - ошибка 109"
Я следовал процедуре в readme.win32, и я получаю ошибки компоновки в omniDyamic, наборах кодов и т. Д. Поэтому кто-то предложил пересобрать 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.
Причина этого заключается в том, что при проверке src\tools\win32\bccwrapper.c в функции void GetMounts(void) он ищет этот путь в реестре: Software\Cygnus Solutions\CYGWIN.DLL setup\b15.0\ монтирует \%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.
С наилучшими пожеланиями, Марк
Я потратил довольно много времени, пытаясь скомпилировать OmniORB для Windows 10 с Visual Studio 2017.
Предполагая, что Cygwin64 был установлен в каталоге
C: \ Программное обеспечение \ cygwin64
Компиляция OmniORB довольно проста:
- открыть командный терминал (cmd)
- в этом терминале настройте визуальную среду:
"C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ VC \ Auxiliary \ Build \ vcvarsall.bat" x64
- затем добавьте путь (добавьте, а не добавьте):
установить 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:
сделать экспорт
Надеюсь это поможет.