On Wed, 2008-01-09 at 17:30 -0500, Adam C Powell IV wrote: <snip> > I think I found the problem. I pre-processed two files in question, > TDF_Attribute.cxx in OpenCASCADE and testDS.cxx in Salomé. I put both > outputs in http://lyre.mit.edu/~powell/salome/ > > In the former, /usr/include/stlport/stl/_iosfwd.h opens a "namespace > _STL {" then #includes /usr/include/stlport/stl/_iosfwd.h which has: > typedef basic_ostream<char, char_traits<char> > ostream; (line 2685) > > In the latter, /usr/include/c++/4.2/iosfwd opens a > "namespace std __attribute__ ((__visibility__ ("default"))) {" then > #includes /usr/include/c++/4.2/iosfwd which has: > typedef basic_ostream<char> ostream; (line 6311) > > So they lead to different symbols, which breaks linking. What to do?
Don't try to "fix" this by making STLport use namespace std; it is not binary-compatible with libstdc++, which is why it uses a different namespace. You must use the same implementation (libraries and headers) in both Salomé and OpenCASCADE. This should probably be libstdc++; so far as I know there is little reason to use STLport with g++ today. You should probably investigate how one of these packages is configured to use STLport and the other doesn't. Ben. -- Ben Hutchings If God had intended Man to program, we'd have been born with serial I/O ports.
signature.asc
Description: This is a digitally signed message part