[omniNotify] Build Problems with Visual Studio 2008
Lewis, Jeffrey G
jeffrey.g.lewis at lmco.com
Wed Nov 26 18:06:06 GMT 2008
I was able to fix my problem. It was quite a learning experience.
I figured out that the omniOrb makefiles determine what symbols to
export from a given DLL by extracting symbols from the static library.
In particular, by doing a dumpbin on the static library, and then
sorting and grepping out symbols they don't want. It looked like
all the symbols that were giving me problems were instantiations of
things from the C++ standard template library. I added an
extra line in win32.mk to grep out symbols with "@std@@" in them, i.e.
symbols from the std:: namespace. Apparently Visual Studio 2008 puts
more symbols into the static library than previous versions of Visual Studio.
I also modified about a dozen files because Visual Studio 2008 won't accept
#include <iostream.h>
but rather only accepts
#include <iostream>
Anybody want my modifications? If so, how should I deliver them?
-------------------------------------------------------------------
From: omninotify-list-bounces at omniorb-support.com [mailto:omninotify-list-bounces at omniorb-support.com] On Behalf Of Lewis, Jeffrey G
Sent: Monday, October 27, 2008 9:51 PM
To: omninotify-list at omniorb-support.com
Subject: [omniNotify] Build Problems with Visual Studio 2008
I've been trying to build and run omniNotify 2.1 with Visual Studio 2008 (aka Visual Studio 9.0), and have been having problems. I fixed the compile errors changing "#include <iostream.h>" to "#include <iostream>" and putting in "using namespace std;" where needed. However, in trying to build the shared libraries (and shared debug libraries), I get errors from the linker about undefined symbols. I have explicitly forced "msvcprt.lib" into the linker command, but I get the same set of undefined symbols. I've got some of the undefined symbols (and the commands) down below. I was able to find these symbols in msvcurt.lib (I did a brute force findstr on all the libraries in the same directory as the C++ runtime library). But that library is for Microsoft's "Common Language Runtime". How can I build so that I don't need those symbols?:
+ ../../../../bin/x86_win32/linkwrapper -gnuwin32 -out:shared/COSNotify413_vc9_rt.dll -DLL -nologo -DEBUG -def:shared/COSNotify4.def -IMPLIB:shared/COSNotify413_rt.lib -libpath:../../../../lib/x86_win32 shared/RDIInteractive.o shared/ChannelAdmin_i.o shared/corba_wrappers_impl.o shared/CosEventProxy.o shared/CosNfyUtils.o shared/CosNotification.o shared/EventChannel_i.o shared/FilterAdmin_i.o shared/Filter_i.o shared/omniNotify.o shared/ProxyConsumer.o shared/ProxySupplier.o shared/RDI.o shared/RDIstrstream.o shared/RDIChannelUtil.o shared/RDIConfig.o shared/RDIConstraint.o shared/RDIDynamicEval.o shared/RDIEval.o shared/RDIEventQueue.o shared/RDINotifQueue.o shared/RDINotifServer.o shared/RDIOplocks.o shared/RDIOpSeq.o shared/RDIParser_l.o shared/RDIParser_y.o shared/RDIRVM.o shared/RDIRVMPool.o shared/RDIStaticEval.o shared/RDITimeWrappers.o shared/RDITypeMap.o omniORB413_rt.lib omniDynamic413_rt.lib omnithread34_rt.lib ws2_32.lib mswsock.lib advapi32.lib COS413_rt.lib COSDynamic413_rt.lib AttNotification413_rt.lib msvcprt.lib msvcrt.lib shared/COSNotify413_vc9_rt.res
shared\COSNotify4.def(1) : warning LNK4093: Drive/Directory component ignored in 'LIBRARY' statement
Creating library shared/COSNotify413_rt.lib and object shared/COSNotify413_rt.exp
COSNotify413_rt.exp : error LNK2001: unresolved external symbol "char * __cdecl std::_Allocate<char>(unsigned int,char *)" (??$_Allocate at D@std@@YAPADIPAD at Z)
COSNotify413_rt.exp : error LNK2001: unresolved external symbol "struct std::_Secure_char_traits_tag __cdecl std::_Char_traits_cat<struct std::char_traits<char> >(void)" (??$_Char_traits_cat at U?$char_traits at D@std@@@std@@YA?AU_Secure_char_traits_tag at 0@XZ)
COSNotify413_rt.exp : error LNK2001: unresolved external symbol "char * __cdecl std::_Traits_helper::copy_s<struct std::char_traits<char> >(char *,unsigned int,char const *,unsigned int)" (??$copy_s at U?$char_traits at D@std@@@_Traits_helper at std@@YAPADPADIPBDI at Z)
COSNotify413_rt.exp : error LNK2001: unresolved external symbol "char * __cdecl std::_Traits_helper::copy_s<struct std::char_traits<char> >(char *,unsigned int,char const *,unsigned int,struct std::_Secure_char_traits_tag)" (??$copy_s at U?$char_traits at D@std@@@_Traits_helper at std@@YAPADPADIPBDIU_Secure_char_traits_tag at 1@@Z)
.
.
.
shared\COSNotify413_vc9_rt.dll : fatal error LNK1120: 25 unresolved externals
More information about the omninotify-list
mailing list