[omniORB] omniDynamic280_rt now required?

Sai-Lai Lo S.Lo@uk.research.att.com
28 Sep 1999 21:37:47 +0100


The short answer is yes on NT with MSVC++. There is a workaround though.

For reasons that I do not understand, the object code now contains
references to a handful of symbols that are in omniDynamic280_rt even if
there is no reference to the functions in that library!

I encountered the same problem when building omniORB280_rt.dll. The
workaround I came up with is to link into the DLL a dummy stub file 
(<top>/lib/omniORB2/orbcore/sharedlib/msvcdllstub.cc). There is no ill
effect because I'm certain that the functions defined in msvcdllstub.cc are
never called in omniORB280_rt.dll. The functions are not exported from the
DLL so they don't interfere with the real implementation in omniDynamic280_rt.

If you don't want to link omniDynamic280_rt.dll and you don't mind this
hack, copy <top>/lib/omniORB2/orbcore/sharedlib/msvcdllstub.cc and link it
with your executable. This is only useful if you do not use Any, TypeCode,
DSI, DII and all their friends in the dynamic interfaces.

I think the spurious symbol dependency is a bug in MSVC++ but I cannot find
a workaround to stop this from happening.

Sai-Lai


>>>>> Jason DeBettencourt writes:

> Using NT4.0 SP5, MSVC 6.0:
> I just rebuilt my code with the new 2.8.0 release, and
> came up with a bunch of unresolved symbols.

> unresolved external symbol "public: __thiscall
> CORBA::TypeCode_member::~TypeCode_member(void)"
> (??1TypeCode_member@CORBA@@QAE@XZ)

> I see that these symbols are in omniDynamic280_rt, is
> it now required to link the dynamic support even if
> I'm not using it?  

> My omniidl2 command line looks like this: 
> omniidl2 -t sm_svc.idl



-- 
Sai-Lai Lo                                   S.Lo@uk.research.att.com
AT&T Laboratories Cambridge           WWW:   http://www.uk.research.att.com 
24a Trumpington Street                Tel:   +44 1223 343000
Cambridge CB2 1QA                     Fax:   +44 1223 313542
ENGLAND