【发布时间】:2014-07-15 22:11:01
【问题描述】:
我正在一起编译 2 个 C++ 文件。 4 如果包含头文件。问题是,当链接器尝试将文件链接在一起时,我不断收到“重复符号”错误。
这是我的文件。
main.h
int test2();
main.cc
#include "main.h"
#include "test.h"
int test2(int test) {
return 0;
}
int main() {
test2(test());
return 0;
}
test.h
int hello = 10;
int test();
test.cc
#include <iostream>
#include "test.h"
using namespace std;
int test() {
cout << hello << endl;
return 0;
}
我认为我做错了一些简单的事情。有人可以指出我做错了什么。 这是我编译文件的方式。
c++ main.cc test.cc -o main
这是我得到的错误:
duplicate symbol _hello in:
/var/folders/nj/568_95bj4dg9v11l_mksv_2m0000gn/T/main-3becdd.o
/var/folders/nj/568_95bj4dg9v11l_mksv_2m0000gn/T/test-e84473.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
【问题讨论】:
-
在
main.h标头中也将int test2();更改为int test();。
标签: c++ compiler-construction linker