我从here下载了一个库。我在我的程序中添加了头文件但是当我尝试访问此头文件的函数时,我收到错误:
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;
}
我该怎么做才能解决这个问题?
此致
答案 0 :(得分: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
答案 1 :(得分:0)
使用gcc时需要链接库:
gcc nameofprgram.c -l<library>
答案 2 :(得分: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