Ошибка компоновщика в C при использовании Postgres

У меня есть следующий код:

#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, который я уже включил в код.

Любая помощь будет большой благодарностью.

1 ответ

#include <libpq-fe.h> не ссылается на библиотеку, она содержит только информацию о функциях и типах данных, которые предоставляет библиотека.

Вы должны указать компоновщику, где ссылки, которые объявлены в libpq-fe.h действительно может быть найден.

Если вы используете Makefile для компиляции кода, вы должны добавить -lpq на ваш LDFLAGS или связывание команды.

Отправьте команду, которую вы используете для компиляции, чтобы дать нам больше информации.

Другие вопросы по тегам