在C中使用头文件

时间:2015-11-20 06:27:39

标签: 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.h"


int sum(int num)
{
    return num + 5;
}

library.h

#ifndef LIBRARY_H
#define LIBRARY_H

#include <stdio.h>

int sum(int num);

#endif

获取错误:

  

C:\用户\加布里埃尔\桌面\ test.o:test.c的||未定义的引用`sum'|

1 个答案:

答案 0 :(得分:6)

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

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

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