std命名空间与_STL命名空间链接问题

时间:2009-12-12 01:56:10

标签: gcc linker shared-libraries

我正在尝试将我写的内容链接到现有的共享库。 我在RedHat 3上使用gcc 3.2.3。当我进入链接阶段时,我收到一条错误消息:

object_files_linux / hvm_example.o(。text + 0x233):〜/ hvm_example.cpp:254:未定义引用`xoc :: hvmapi :: id(std :: basic_string,std :: allocator> const&)'

我在目标文件上运行了nm命令,它显示了相关函数:

U xoc :: hvmapi :: id(std :: basic_string,std :: allocator> const&)

我在共享库上运行nm并显示有问题的函数:

T xoc :: hvmapi :: id(__ STL :: basic_string,_STL :: allocator> const&)

我的问题是:链接是否失败,因为我的函数使用std命名空间而共享库使用_STL命名空间?

有解决方法吗?

我无法访问共享库源代码的源代码,但我确实有使用std名称空间作为参数的头文件。

谢谢, 麦克

1 个答案:

答案 0 :(得分:0)

您使用的共享库可能是使用STLport构建的。阅读该共享库的文档 - 它应该清楚地说明您必须使用STLport编译代码,以及您应该使用的{em>特定版本的STLport

请注意,g++的不同版本也不兼容链接,尤其是版本3.2.x3.3.x3.4.x。您必须使用与用于构建第三方共享库的版本g++相同的进行编译。