【发布时间】:2014-07-15 20:13:48
【问题描述】:
我试图在 C++ 中包含这样的函数,但我不明白为什么它不起作用。我有 3 个文件。
test.cc
int test() {
std::cout << "This is a test" << std::endl;
}
test.h
int test();
main.cc
#include "test.h"
int main() {
test();
return 0;
}
这是我得到的错误和我使用的命令。
c++ main.cc -o main
Undefined symbols for architecture x86_64:
"test()", referenced from:
_main in main-12ba52.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
【问题讨论】:
-
您遇到的错误是什么?请张贴。我怀疑这是链接器问题,而不是编译器问题。
-
你得到什么错误?
-
include 没有问题,只要列出
test.cc进行编译,但它不会编译。std::cout未声明。您必须在test.cc中#include <iostream>。 -
test.cc 缺少一些#includes
-
c++ main.cc -o main仅编译main.cc。您还需要将test.cc编译成test.o,然后将test.o和main.o链接到一个可执行文件中。