我正在学习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)
有人对如何解决这个问题有想法吗?
答案 0 :(得分:1)
g++ test.cpp add.cpp
每个cpp文件都需要编译为单独的.obj文件