在C中使用头文件

在C中使用头文件,c,gcc,libraries,C,Gcc,Libraries,我的程序中有几个问题,包括自定义库 我有我的main.c文件和library.c(其中存储了所有函数)和library.h(其中存储了所有原型) 在main.c中,我放置了#include“library.h”,但当我尝试编译时,这些函数无法识别 我做错什么了吗 我正在使用GCC构建文件 test.c: #include "library.h" int main() { int num = 5; sum(num); } library.c #include "library.

我的程序中有几个问题,包括自定义库

我有我的
main.c
文件和
library.c
(其中存储了所有函数)和
library.h
(其中存储了所有原型)

main.c
中,我放置了
#include“library.h”
,但当我尝试编译时,这些函数无法识别

我做错什么了吗

我正在使用GCC构建文件

test.c:

#include "library.h"

int main()
{
    int num = 5;
    sum(num);
}
library.c

#include "library.h"


int sum(int num)
{
    return num + 5;
}
library.h

#ifndef LIBRARY_H
#define LIBRARY_H

#include <stdio.h>

int sum(int num);

#endif
\ifndef库
#定义库
#包括
整数和(整数);
#恩迪夫
获取错误:

C:\Users\Gabriel\Desktop\test.o:test.C | |对“sum”的未定义引用|


包含头文件是不够的。头文件中的原型只是告诉编译器应该有一个函数

您必须将函数实际添加到程序中。这是在链接时完成的。最简单的方法是

gcc -o myprog test.c library.c
还有更复杂的选择。如果要将多个文件实际添加到库中,可以独立编译它们并构建归档。下面是一些说明基本思想的命令

gcc -o library.o library.c
gcc -o someother.o someother.c
ar a libmy.a library.o someother.o

gcc -o myprog test.c -l my

包含头文件是不够的。头文件中的原型只是告诉编译器应该有一个函数

您必须将函数实际添加到程序中。这是在链接时完成的。最简单的方法是

gcc -o myprog test.c library.c
还有更复杂的选择。如果要将多个文件实际添加到库中,可以独立编译它们并构建归档。下面是一些说明基本思想的命令

gcc -o library.o library.c
gcc -o someother.o someother.c
ar a libmy.a library.o someother.o

gcc -o myprog test.c -l my

您看到的确切错误消息是什么?您是否在编译期间使用
-I
选项提供了包含路径?根据问题中的描述,您做的一切都是正确的。但它不起作用,所以。。。您需要做一个演示问题的示例。“未定义引用”是链接器错误。编译时使用的完整命令是什么?仅包含头文件不会自动链接库。Make lib.c包含在您的项目中,以便两个文件都被编译并链接在一起。您看到的确切错误消息是什么?您是否在编译期间使用
-I
选项提供了包含路径?根据问题中的描述,您做的一切都是正确的。但它不起作用,所以。。。您需要做一个演示问题的示例。“未定义引用”是链接器错误。编译时使用的完整命令是什么?仅包含头文件不会自动链接库。Make lib.c包含在您的项目中,这样两个文件都可以编译并链接在一起。