Xcode C ++ extern变量链接器错误

时间:2017-11-19 17:43:40

标签: c++ xcode linker

我正在学习使用C ++编写代码,并且正在OS X 10.13.1上使用Xcode9.1。在尝试理解关键字extern的使用时,我遇到了以下代码的问题:

extern int foo;
#include <iostream>

int main() {
    foo = 7;
    std::cout << foo << std::endl;
    return 0;
}

运行时导致链接器错误:

Undefined symbols for architecture x86_64:
  "_foo", referenced from:
      _main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我不确定为什么链接器找不到foo,尽管定义是main中的第一行。

非常感谢您查看我的问题!

1 个答案:

答案 0 :(得分:0)

链接器找不到foo,因为它没有在任何地方定义。通过声明extern int foo&#39;,您告诉链接器该定义位于其他位置。删除extern,或在链接器可以找到它的位置定义foo

看看这个example on Wikipedia