架构x86_64的未定义符号->架构x86_64的未找到符号

时间:2019-02-13 15:31:52

标签: c++

我正在学习C ++,我已经明白这是可行的:

helloworld.cpp

#include <iostream>
using namespace std;

int main() {
   cout << "Hi" << endl;
   return 0;
}

我正在使用MacOS Mojave,为了进行编译,我使用了命令

>> g++ helloworld.cpp
>> ./a.out

这可以正常工作。现在我要使用头文件。因此,我创建了以下文件:

test.cpp

#include <iostream>
#include "add.h"
using namespace std;

int main() {
   add(4,7);
   return 0;
}

add.h

#pragma once
int add(int a, int b);

add.cpp

#include "add.h"
int add(int a, int b) {
    return a + b;
}

当我尝试编译它时,我得到:

>> g++ test.cpp
Undefined symbols for architecture x86_64:
  "add(int, int)", referenced from:
      _main in test-ebc106.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

有人对如何解决这个问题有想法吗?

1 个答案:

答案 0 :(得分:1)

g++ test.cpp add.cpp

每个cpp文件都需要编译为单独的.obj文件