【发布时间】:2012-06-30 20:16:12
【问题描述】:
我在使用标头编译一些文件时遇到了一些问题。这是我的代码的细分:
file1.c
#include "header.h"
int main() {
func1();
return 0;
}
file2.c
#include "header.h"
void func1() {
... function implementation ...
}
header.h
void func1();
我得到的错误是:
在函数
'main':
对'func1'的未定义引用
注意:我只是对我的 3 个文件的设置方式进行了简单的细分。我需要让它与 3 个文件一起使用。我正在正确设置/包括所有内容?我需要使用这个设置,但我只是不确定 file.c 如何引用 func1() 的实际实现。
【问题讨论】:
-
你用的是什么编译器??你能提供你的编译器语句吗?
-
如果您使用的是
gcc -o program file2.c file1.c,请将其更改为gcc -o program file1.c file2.c。顺序很重要。 -
嗯,你有权在正常的 gcc 编译下工作。问题是,这个问题更多来自一个非常大的项目,有数百个文件。但是问题的结构是一样的。我只是想也许我没有正确地包含东西,但我想情况并非如此。
-
我刚刚用 gcc -- gcc -o test file2.c file1.c -- 在两个位置都使用了 file1.c 和 file2.c 进行了尝试。我想,还有其他事情正在发生。我在 Ubuntu 10.04 gcc 版本 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
-
@H2CO3:AFAIK,顺序只对图书馆很重要。 IE。 libs (
-lnameoflib) 应该使用它们的符号在源代码之后指定,如果存在 lib 间依赖关系,那么 libs 的顺序也很重要,或者必须使用分组选项(链接器然后进入组的循环, 直到所有引用都得到满足或无法解决。)
标签: c include compiler-errors