与STLport4.6.2链接的Solaris库,提供与ostream相关的未定义错误

时间:2015-05-26 13:44:05

标签: c++ stl operators undefined ostream

我有一个遗留的C ++项目,现在我第一次用stlport4编译它。

我做的是: 1.构建一个libmcommon_stl库:用-libraty = stlport4 -library = no%Csd编译。我没有在STL配置中禁用ostream,直到这里都可以;

  1. 与上面的库一起启动了完整的项目编译,得到了链接器错误 链接错误: 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
  2. 未定义首次引用  文件中的符号 std :: ostream& operator<<(std :: ostream&,const RWCollectableString&)/ home / my / lib / libmcommon_stl.so

    我知道链接器无法找到运算符<<定义并验证与此相关的代码:

    cerr<< (RWCollectableString )rwhIterator.value()<< ENDL;

    我尝试使用-library = Cstd,但看到了很多错误。如何与ostream联系?现在可以摆脱cerr依赖?

1 个答案:

答案 0 :(得分:0)

<iostream>和STL在历史上是无关的。自1998年以来,当两者成为标准库= namespace std的一部分时,两者变得相关。那时,两人粘在一起。

STLport是1998年以前STL的延续。将其粘贴到IOstreams有点棘手,因为预期会有什么确切的流? STLport的主要用途是在完全错过标准库的平台上,因此可以替代标准IO流,但也可以选择使用标准IO流。

根据您的错误,您选择的流似乎不一致。你想要哪一个?