“找不到架构x86_64的ld:符号”(g ++,OS X 10.11)

时间:2017-06-10 21:09:02

标签: c++ linker clang llvm

我有这个非常简单的C ++代码,无法编译。我做错了什么?

的main.cpp

#include "thing.hpp"

int main() {
    thing* t = new thing;
    t->foo();
    delete t;
    return 0;
}

thing.cpp

#include "thing.hpp"

void thing::foo() {};

thing.hpp

#ifndef THING_H
#define THING_H

class thing {
public:
    void foo();
};

#endif

我使用以下命令编译:

g++ main.cpp -o main

这是我的输出:

  

架构x86_64的未定义符号:    “thing :: foo()”,引自:        _main in main-29d9b1.o   ld:找不到架构x86_64的符号   clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

所有文件都在同一目录中。我在OS X 10.11.6上使用Apple LLVM版本8.0.0(clang-800.0.42.1)。提前谢谢!

1 个答案:

答案 0 :(得分:-2)

在我之前不久,有人问了同样的问题here并且正确地指出每个 cpp文件都必须传递给g ++。

所以这个有效:

g++ main.cpp thing.cpp -o main