c - 对函数 C 的 undefined reference

标签 c unix header-files

我从 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/

相关文章:

c - Queue中的node_add,只插入前3个作为前中后

linux - 大括号扩展 - 表达式太多

c++ - 调用虚函数的覆盖导致段错误

c++ - 哪个 C++ 转换类型是 C 转换等同于

c - 循环的时间复杂度

c - 查询服务器并获取 addrinfo 结构体的结果

c - 等待所有子进程退出

c - 哪个文件应包含我的 c 项目中的库?

c - 源文件看不到其他 header 的定义

c++ - 浮点运算