Re: C++/STL linking trouble
On Wed, Jan 09, 2008 at 07:07:30AM -0500, Adam C Powell IV wrote:
> Greetings,
Hello Adam,
> I'm having trouble with a new C++ package called Salomé which I can't
> get to link to a C++ library in a new package OpenCASCADE.
>
> Here's the error:
[...]
> Using nm -C I found that the library libTKernel has:
> 0000000000004c74 T operator<<(_STL::basic_ostream<char, _STL::char_traits<char> >&, TCollection_AsciiString const&)
> and the other missing symbols are in that and other OpenCASCADE libs
> with s/std/_STL/ .
>
> >From Googling around, I've learned that this seems to be a confusion
> between the stlport namespace and standard C++ library namespace for the
> argument symbols. So how do I either get Salomé to build in the stlport
> namespace, or get OpenCASCADE to not build there?
It seems the libTKernel has changed how STLport std:: namespace (through
_STDP_STD_NAME macro) gets expanded. If you have a look at libstlport5.1
symbols you should see there are defined in the stlp_std:: namespace.
Removing this #define _STDP_STD_NAME _STL from headers used by libTKernel
should fix the link failure.
I'll answer the omniORB change on the pkg-corba mailing list.
Thomas
Reply to: