Библиотека Solaris, связанная с STLport4.6.2, дает неопределенную ошибку, связанную с ostream

У меня есть устаревший проект C++, и теперь я впервые компилирую его с помощью stlport4.

что я сделал: 1. собрал библиотеку libmcommon_stl: скомпилировал с -libraty=stlport4 -library=no%Csd. Я не отключал ostream в конфигурации STL, и до сих пор все в порядке;

  1. начал полную компиляцию проекта вместе с вышеуказанной библиотекой, получил ошибку компоновщика LINKING ERROR: rtlink -cxx -optimized -i -mt -L/home/my/SunCC/prod/lib -L/home/my/misc/sqlite3/lib -lsqlite3 -L//home/my/misc_libs/solaris-32bit-tools/xerces-c-3/lib -lxerces-c -library=stlport4 -o ../../bin/testcpp_stl obj_rel/testcpp_stl.o -lposix4 - L/home/my/lib -L/home/my/misc/STLport4.6.2/lib -lstlport_sunpro -Bdynamic -L/home/my/misc/sourcepro5_stlport462/lib -loas -L. -R/home/my/misc/sqlite3/lib -ltls7712d -lmcommon_stl -ldbt5312d -L../lib -L/home/my/misc/ACE5.3_STLport4.6.2/ACE_wrappers/ace -lACE -lNOTIF

Неопределенный первый ссылочный символ в файле std::ostream &operator‹‹(std::ostream &,const RWCollectableString&) /home/my/lib/libmcommon_stl.so

Я понял, что компоновщик не может найти определение оператора, и проверил код, подобный этому:

cerr ‹‹ (RWCollectableString)rwhIterator.value() ‹‹ endl;

Я пробовал с -library=Cstd, но видел много ошибок. Как связать с ostrim? Теперь можно избавиться от зависимости cerr?


person RameshJanagama    schedule 26.05.2015    source источник


Ответы (1)


<iostream> и STL исторически не связаны. С 1998 года они стали связаны, когда оба стали частью стандартной библиотеки = namespace std. В этот момент они были склеены вместе.

STLport является продолжением STL до 1998 года. Приклеить его к IOstreams немного сложно, потому что какой именно поток ожидается? STLport в основном используется на платформах, в которых отсутствует стандартная библиотека, поэтому есть замена стандартным потокам ввода-вывода, а также возможность использовать стандартные потоки ввода-вывода.

Судя по вашим ошибкам, вы непоследовательны в выборе потоков. Какой из них вы хотели?

person MSalters    schedule 26.05.2015