包含c文件会导致未定义的引用

时间:2012-03-07 01:55:13

标签: c

当我包含c文件时,我开始获得对其他函数的未定义引用。然后,我必须开始包含包含这些函数的c文件。我该如何解决这个问题?未包含的引用在我包含的c文件中引用,但由于我实际上并不包含这些文件,因此我得到了未定义的引用。

3 个答案:

答案 0 :(得分:0)

通常一个包含“.h”文件,而不是“.c”文件。

如果调用.h文件中声明的函数,编译起始C文件以获取完整程序是不够的 - 您还需要链接与实现声明函数的代码关联的目标文件。这些可能在库中,在这种情况下,您需要链接到该库。

答案 1 :(得分:0)

您需要一次编译所有文件(gcc *.c)或将每个.c文件编译成单独的目标文件,然后将它们全部链接到可执行文件中:

gcc -c main.c -o main.o
gcc -c helper.c -o helper.o
gcc -c other.c -o other.o
gcc *.o -o main

在每个.c文件中,您应该只包含.h个文件。

答案 2 :(得分:0)

包括什么意思?包括通过#include预处理程序指令,或包括将它们添加到项目中。

您无法解决程序中调用的所有函数(或通常是引用的外部符号)必须包含在该程序中,或者必须存在于链接的库中明确地或隐含地参与该计划。

只需继续添加所有引用都需要的源文件。

如果你不能这样做,那么你可能在程序或构建方面遇到了一些问题。程序是不完整的(缺少源文件),损坏(缺少源文件的部分),或者您在构建中包含了不适当的源文件(例如,在为Unix编译程序时需要的源文件,但是你'重新构建Windows)或配置错误(因此它有条件地编译错误平台的某些代码)或者程序根本没有移植到您的系统(引用您没有的库函数)。