0

我从这里下载了一个库。我在程序中添加了头文件,但是当我尝试访问此头文件的功能时,出现错误:

undefined reference to the function for u_open() and u_accept(). 我试图编译.c这个头文件的文件,但我得到这个错误:

undefined reference to main.

我尝试了我所知道的一切来解决这个问题,但无法解决。这是程序。

#include "uici.h"
int main()
{
char client[50];
char buf[1024];

u_port_t portnumber;
portnumber=48625;

int fd = u_open(portnumber);

int communFd = u_accept(fd,client,50);

perror("Opened");

fprintf(stderr,"\nComun fd is %d\n\n\n",communFd);

read(communFd,buf,1024);

write(STDOUT_FILENO,buf,1024);

fprintf(stderr,"\n\nReading complete\n");
return 0;
}

我能做些什么来解决这个问题?

问候

4

3 回答 3

1

您的头文件uici.h声明了您在main()(u_open()u_accept()) 中调用的函数,但没有声明它们的实现,它们位于源文件中。当链接器尝试创建整个程序时,它会抱怨找不到实现。

解决方案是在创建实际程序二进制文件时将所有文件链接在一起。使用 g++ 前端时,您可以通过在命令行上同时指定所有源文件来做到这一点。例如:

g++ -o main main.c uici.c

将创建名为“main”的主程序,假设您需要的实现位于uici.c.

编辑:如果您要链接到预建库uici,则需要向前端指定链接所需的库,例如:

g++ -o main main.c -luici
于 2013-01-28T08:02:39.930 回答
0

使用 gcc 时需要链接库,例如:

gcc nameofprgram.c -l<library>

于 2013-01-28T07:51:02.057 回答
0

使用 gcc 编译时使用这些标志中的任何一个

-I <searchpath to include files>
-L <searchpath to the lib file>
-l<thelibname>

前任:

  gcc -o myprogram -lfoo -L/home/me/foo/lib myprogram.c

这会将 myprogram 与文件夹 /home/me/foo/lib 中的静态库 libfoo.a 链接起来

于 2013-01-28T07:53:51.693 回答