[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: C++/STL linking trouble



On Wed, 2008-01-09 at 15:37 +0100, Thomas Girard wrote:
> 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.

Thank you for pointing this out.  OpenCASCADE doesn't work with stlport
5.1, just 4.6.

I don't see _STDP_STD_NAME in any of the OpenCASCADE headers...  Should
I perhaps #define _STDP_STD_NAME std, or #undef it?

> I'll answer the omniORB change on the pkg-corba mailing list.

Alexandre Fayolle pointed out that Salomé only supports omniORB 4.0.x,
not 4.1.1.  So to get this to build in unstable, I'll need to port it to
4.1.1. :-(

I'll stick to building in testing for now, and port when I get time.

Thanks again,
-Adam
-- 
GPG fingerprint: D54D 1AEE B11C CE9B A02B  C5DD 526F 01E8 564E E4B6

Engineering consulting with open source tools
http://www.opennovation.com/


Reply to: