首页 > 解决方案 > 对 > `std::ostream::operator<<(unsigned long)' 的未定义引用

问题描述

我有以下代码:

#include <sstream>
using namespace std;

int
main ()
{
        ostringstream oss;
        unsigned long k = 5;
        oss << k;
}

使用以下参数编译:

/usr/local/gcc-10.2.0/bin/g++ -I/usr/local/gcc-10.2.0/include -L/usr/local/gcc-10.2.0/lib64 -Wl,-rpath,/usr /local/gcc-10.2.0/lib64 -lstdc++ b.cpp

得到以下输出:

/tmp/cclRSXGV.o: 在函数main': b.cpp:(.text+0x35): undefined reference to std::ostream::operator<<(unsigned long)'

collect2:错误:ld 返回 1 个退出状态

需要什么才能正确编译和链接?

使用 GNU gcc 10.2.0。

标签: c++gccundefined-reference

解决方案


当您指定要链接的库时,顺序很重要。按照这个顺序

-lstdc++ b.cpp

libstdc++不会解析b.cpp. 指定库后记:

b.cpp -lstdc++ 

推荐阅读