小编Jon*_*rio的帖子

ld:版本 3 无效(最大 0)- 添加符号时出错:值错误

我正在使用 g++ 9.2.1 和 binutils 2.34。我正在运行 Manjaro 19.0.2 和 Linux 内核 5.4.23-1。一切都来自于我刚刚安装的全新 Manjaro,我认为这可以解决问题。

在编译以下超级简单的程序时:

#include <iostream>

int main()
{
    std::cout << "Hello" << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我运行g++ main.cpp -o program,一切都很好,并且在执行 ./program 时我会收到 Hello。

但是,当我运行 g++ main.cpp -o main.o 时,它可以工作,但是当我运行 g++ main.o -o 程序时,出现以下错误:

/usr/bin/ld: main.o: _ZSt4cout: invalid version 3 (max 0)
/usr/bin/ld : main.o : error adding symbols: bad value
collect2: error: ld return 1 exit status
Run Code Online (Sandbox Code Playgroud)

我完全不知道它从哪里来。

c++ g++ linker-errors ld

7
推荐指数
1
解决办法
2万
查看次数

在 C++ 中获取当前年份的更优雅的方式

我对 C++ 还很陌生。我需要获取当前年份并将其存储在 int 中。

我已经找到了这个解决方案:

std::time_t result = std::time(nullptr);
std::istringstream iss(ctime(&result));

iss.ignore(20);
int year;
iss >> year;
Run Code Online (Sandbox Code Playgroud)

我发现这个解决方案有点难看,即使它有效,因为它看起来不太健壮,而且需要很多步骤才能完成很多工作。

有更好的方法吗?

c++ time std stream

2
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×2

g++ ×1

ld ×1

linker-errors ×1

std ×1

stream ×1

time ×1