我从 here 下载了一个库。我在程序中添加了头文件,但是当我尝试访问该头文件的函数时,出现错误:
对 u_open() 和 u_accept() 函数的 undefined reference
。我尝试编译此头文件的 .c
文件,但收到此错误:
对 main 的 undefined reference
。
我尝试了我所知道的一切来解决这个问题,但无法解决。这是程序。
#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;
}
我该如何解决这个问题?
问候
最佳答案
您的头文件 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
关于c - 对函数 C 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14557616/