我有以下代码:
#include <stdio.h>
#include <stdlib.h>
#include <libpq-fe.h>
int main(int argc, char* argv[])
{
//Start connection
PGconn* connection = PQconnectdb("host=webcourse.cs.nuim.ie dbname=cs621 sslmode=require user=ggales password=1234");
if (PQstatus(connection) ==CONNECTION_BAD)
{
printf("Connection error\n");
PQfinish(connection);
return -1; //Execution of the program will stop here
}
printf("Connection ok\n");
//End connection
PQfinish(connection);
printf("Disconnected\n");
return 0;
}
当我运行它时,我收到以下错误:
/tmp/cc73kO0N.o: In function `main':
main.c:(.text+0x15): undefined reference to `PQconnectdb'
main.c:(.text+0x25): undefined reference to `PQstatus'
main.c:(.text+0x40): undefined reference to `PQfinish'
main.c:(.text+0x5d): undefined reference to `PQfinish'
collect2: error: ld returned 1 exit status
这很奇怪,因为PQconnectdb等是libpq-fe.h中定义的所有函数,我已经将其包含在代码中。
任何帮助都会非常感谢。
答案 0 :(得分:2)
#include <libpq-fe.h>
没有链接到库,它只包含有关库提供的函数和数据类型的信息。
您必须告诉链接器实际可以找到libpq-fe.h
中声明的引用的位置。
如果您使用Makefile编译代码,则应将-lpq
添加到LDFLAGS
或链接命令。
发布您正在运行的命令进行编译,以便为我们提供更多信息。