我正在尝试将库链接到我的c程序,以便我的主程序可以使用我正在创建的库中的函数,但是我得到了错误。
这是我的一些库代码(我们称这个文件为lib.c):

#include <bfd.h>
#include <stdio.h>

static void doDump ( bfd *abfd )
{
    printf (_("\n%s:     file format %s\n"), bfd_get_filename (abfd), abfd->xvec->name);
    doHeaders ( abfd );
}

这是我的主程序(我们称这个文件为main.c):
#include "bfd.h"

static void getFile ( char *filename, char *target )
{
    bfd *file;
    file = bfd_openr (filename, target);
    doDump (file);
    bfd_close (file);
}

int main (int argc, char **argv)
{
    char *target = NULL;
    bfd_init ();
    getFile ("a.out", target);
}

以下是我运行的链接库的命令:
cc-墙-c库.c
ar-cvq libdata.a lib.o文件
c c-o mainprog main.c库a-lbfd
但是,我得到了这个错误:
对doDump的未定义引用
指的是这条线:
doDump(文件);
我做错什么了?
谢谢

最佳答案

您在lib.c中将doDump定义为static。这意味着它在文件之外是不可见的。删除static关键字,问题就会消失。

08-04 06:07