Visual Studio 为什么哐当摔哐当:错误:链接器命令失败,退出代码为1(使用-v查看调用)后使用cin和cout [duplicate]

xxls0lw8  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(120)

此问题已在此处有答案

What is an undefined reference/unresolved external symbol error and how do I fix it?(39答案)
5天前关闭。
所以我有一个问题,当我试图在vscode中编译一个c++文件时。我会在终端上执行clang Watermelon.cpp。下面的代码可以很好地实现这一点

#include <iostream>

using namespace std;

int main() {
    int x;
    
    return 0;
}

但是,一旦我添加了cin和cout,它就会抛出一个错误。

#include <iostream>

using namespace std;

int main() {
    int x;
    cin >> x;
    return 0;
}
Error: Undefined symbols for architecture arm64:
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::operator>>(int&)", referenced from:
      _main in Watermelon-42c4ad.o
  "std::__1::cin", referenced from:
      _main in Watermelon-42c4`your text`ad.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

使用VScodes调试器运行它是可行的,但我想弄清楚为什么当我从学校的Windows mingGW切换到MacBook上的clang时会发生这种情况。

puruo6ea

puruo6ea1#

clang Watermelon.cpp

这将调用C编译器前端。它会正确地识别出它是C代码并编译它,但它仍然会链接到C标准库而不是C标准库,这就是为什么它找不到引用函数的定义。
你应该使用C++编译器前端:

clang++ Watermelon.cpp

相关问题