[omniORB] omniORB on windows 2003 64-bit
Peter Klotz
peter.klotz at aon.at
Thu Apr 20 22:47:47 BST 2006
Hi Igor
> There are only precompiled packages for win32. And since the instructions to
> set-up VS projects with omniORB only mentiones win32, is it at all possible
> (I mean, did anyone actualy done it succesfully and is hapilly using such
> ORB) to compile omniORB 64-bit?
Of course. We are using omniORB under Windows XP x64 Edition compiled
with cl 14.00 for x64 (from Visual Studio 2005).
Some time ago I have sent a patch against omniORB 4.0.6 to make it
compile under x64 Windows. It has been incorporated into omniORB 4.0.7.
Two things you should be aware of when compiling omniORB for x64:
* You need an x64 version of Python to compile omniORB. Python 2.4.x
does compile out of the box with cl 14.00 but it crashes due to the
secure runtime library shipped with VS2005. The attached patch (that
will be incorporated into Python 2.5) fixes that.
* Compilation of omniORB stops at some point because the manifest files
needed to execute omniidl and omnicpp are not copied by the build
process. Copy the two manifest files
(src\tool\omniidl\cxx\omniidl.exe.manifest and
src\tool\omniidl\cxx\cccp\omnicpp.exe.manifest) manually into directory
bin\x86_win32.
Best regards, Peter.
-------------- next part --------------
diff -burN Python-2.4.3/Python/pythonrun.c Python-2.4.3.patched/Python/pythonrun.c
--- Python-2.4.3/Python/pythonrun.c 2005-03-29 14:32:50.000000000 +0200
+++ Python-2.4.3.patched/Python/pythonrun.c 2005-12-06 09:42:46.265625000 +0100
@@ -1654,6 +1654,23 @@
return context.sa_handler;
#else
PyOS_sighandler_t handler;
+/* Special signal handling for the secure CRT in Visual Studio 2005 */
+#if defined(_MSC_VER) && _MSC_VER >= 1400
+ switch (sig) {
+ /* Only these signals are valid */
+ case SIGINT:
+ case SIGILL:
+ case SIGFPE:
+ case SIGSEGV:
+ case SIGTERM:
+ case SIGBREAK:
+ case SIGABRT:
+ break;
+ /* Don't call signal() with other values or it will assert */
+ default:
+ return SIG_ERR;
+ }
+#endif /* _MSC_VER && _MSC_VER >= 1400 */
handler = signal(sig, SIG_IGN);
if (handler != SIG_ERR)
signal(sig, handler);
More information about the omniORB-list
mailing list