2012-06-30 47 views
9

我在使用头文件编译几个文件时遇到了一些问题。这里是我的代码崩溃:“未定义的函数参考”错误

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()的实际实现。

+2

你在用什么编译器?你能提供你的编译器语句吗? – mathematician1975

+3

如果您使用'gcc -o program file2.c file1.c',请将其更改为'gcc -o program file1.c file2.c'。订单很重要。 – 2012-06-30 20:28:26

+0

嗯,你的权利,这应该在正常的海湾合作委员会编译工作。问题是,这个问题更多的是来自一个非常大的项目,有数百个文件。但问题的结构是一样的。我只是想,也许我没有正确地包括东西,但我想不是这样。 – Tesla

回答

4

如果错误是一个未定义的参考func1()并没有其他错误,那么我会认为这是因为你有两个文件叫你的项目header.h,并且被列入,而不是与你的副本另一份申报func1()

我会检查项目的包含路径,并确保header.h与您的申报func1()首先被包括在内。

+0

这太旧了,但我遇到了这个问题,我很感激帮助。基本设置与这个问题相同,除了我确定包含正确的头部信息之外,因为某些函数不会给出未定义的引用,有些函数也可以。这很奇怪,如果我损害了头文件,那么代码“正确”不能编译。 –