powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подключение с++ и postgres с помощью библиотеки libpq
27 сообщений из 27, показаны все 2 страниц
Подключение с++ и postgres с помощью библиотеки libpq
    #39413982
ver__rev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, дали задание написать программу на с++ .которая позволяла бы выводить результаты запросов из postgres, для начала нужно соединить их для этого использовала библиотеку: libpq-fe.h. Поскольку с++ выдавал ошибки ,явно прописала пути include lib в свойствах проекта и данные ошибки пропали, то есть библиотека подключена? Но возникли непонятные мне новые ошибки :



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Ошибка	12	error LNK1120: неразрешенных внешних элементов: 11	C:\Users\Toshiba\Documents\Visual Studio 2013\Projects\ConsoleApplication59\Debug\ConsoleApplication59.exe	ConsoleApplication59
Ошибка	11	error LNK2019: ссылка на неразрешенный внешний символ _PQclear в функции _main	C:\Users\Toshiba\Documents\Visual Studio 2013\Projects\ConsoleApplication59\ConsoleApplication59\ConsoleApplication59.obj	ConsoleApplication59
Ошибка	1	error LNK2019: ссылка на неразрешенный внешний символ _PQconnectdb в функции _main	C:\Users\Toshiba\Documents\Visual Studio 2013\Projects\ConsoleApplication59\ConsoleApplication59\ConsoleApplication59.obj	ConsoleApplication59
Ошибка	4	error LNK2019: ссылка на неразрешенный внешний символ _PQerrorMessage в функции _main	C:\Users\Toshiba\Documents\Visual Studio 2013\Projects\ConsoleApplication59\ConsoleApplication59\ConsoleApplication59.obj	ConsoleApplication59
Ошибка	5	error LNK2019: ссылка на неразрешенный внешний символ _PQexec в функции _main	C:\Users\Toshiba\Documents\Visual Studio 2013\Projects\ConsoleApplication59\ConsoleApplication59\ConsoleApplication59.obj	ConsoleApplication59
Ошибка	2	error LNK2019: ссылка на неразрешенный внешний символ _PQfinish в функции "void __cdecl exit_nicely(struct pg_conn *)" (?exit_nicely@@YAXPAUpg_conn@@@Z)	C:\Users\Toshiba\Documents\Visual Studio 2013\Projects\ConsoleApplication59\ConsoleApplication59\ConsoleApplication59.obj	ConsoleApplication59
Ошибка	9	error LNK2019: ссылка на неразрешенный внешний символ _PQfname в функции _main	C:\Users\Toshiba\Documents\Visual Studio 2013\Projects\ConsoleApplication59\ConsoleApplication59\ConsoleApplication59.obj	ConsoleApplication59
Ошибка	10	error LNK2019: ссылка на неразрешенный внешний символ _PQgetvalue в функции _main	C:\Users\Toshiba\Documents\Visual Studio 2013\Projects\ConsoleApplication59\ConsoleApplication59\ConsoleApplication59.obj	ConsoleApplication59
Ошибка	8	error LNK2019: ссылка на неразрешенный внешний символ _PQnfields в функции _main	C:\Users\Toshiba\Documents\Visual Studio 2013\Projects\ConsoleApplication59\ConsoleApplication59\ConsoleApplication59.obj	ConsoleApplication59
Ошибка	7	error LNK2019: ссылка на неразрешенный внешний символ _PQntuples в функции _main	C:\Users\Toshiba\Documents\Visual Studio 2013\Projects\ConsoleApplication59\ConsoleApplication59\ConsoleApplication59.obj	ConsoleApplication59
Ошибка	6	error LNK2019: ссылка на неразрешенный внешний символ _PQresultStatus в функции _main	C:\Users\Toshiba\Documents\Visual Studio 2013\Projects\ConsoleApplication59\ConsoleApplication59\ConsoleApplication59.obj	ConsoleApplication59
Ошибка	3	error LNK2019: ссылка на неразрешенный внешний символ _PQstatus в функции _main	C:\Users\Toshiba\Documents\Visual Studio 2013\Projects\ConsoleApplication59\ConsoleApplication59\ConsoleApplication59.obj	ConsoleApplication59


Искала ответ на вопрос ,что с этим делать на форумах,но в разных случаях данные ошибки возникают из-за разных вещей. Не могли бы Вы помочь разобраться в чём дело и как это исправить?

Пока что не писала никакую программу, а взяла стандартный пример из документации :

Пример 31-1. Первая программа, демонстрирующая использование libpq

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
/*
 * testlibpq.c
 *
 *      Тестирование libpq (версии для C), клиентской библиотеки PostgreSQL.
 */
#include <stdio.h>
#include <stdlib.h>
#include <libpq-fe.h>

static void
exit_nicely(PGconn *conn)
{
    PQfinish(conn);
    exit(1);
}

int
main(int argc, char **argv)
{
    const char *conninfo;
    PGconn     *conn;
    PGresult   *res;
    int         nFields;
    int         i,
                j;

    /*
     * Если пользователь передаёт параметр в командной строке, использовать его как
     * строку соединения; иначе принять по умолчанию dbname=postgres и использовать
     * переменные среды или значения по умолчанию для всех других параметров соединения.
     */
    if (argc > 1)
        conninfo = argv[1];
    else
        conninfo = "dbname = postgres";

    /* Установить подключение к базе данных */
    conn = PQconnectdb(conninfo);

    /* Убедиться, что соединение с сервером установлено успешно */
    if (PQstatus(conn) != CONNECTION_OK)
    {
        fprintf(stderr, "Connection to database failed: %s",
                PQerrorMessage(conn));
        exit_nicely(conn);
    }

    /*
     * В нашем тестовом сценарии задействуется курсор, а работать с ним нужно
     * в блоке транзакции. Мы могли бы сделать всё то же самое, обойдясь одним
     * PQexec() с запросом "select * from pg_database", но это было бы
     * слишком просто для хорошего примера.
     */

    /* Начать блок транзакции */
    res = PQexec(conn, "BEGIN");
    if (PQresultStatus(res) != PGRES_COMMAND_OK)
    {
        fprintf(stderr, "BEGIN command failed: %s", PQerrorMessage(conn));
        PQclear(res);
        exit_nicely(conn);
    }

    /*
     * Когда PGresult становится не нужен, его нужно очистить (используя PQclear)
     * во избежание утечек памяти
     */
    PQclear(res);

    /*
     * Выбрать строки из pg_database, системного каталога баз данных
     */
    res = PQexec(conn, "DECLARE myportal CURSOR FOR select * from pg_database");
    if (PQresultStatus(res) != PGRES_COMMAND_OK)
    {
        fprintf(stderr, "DECLARE CURSOR failed: %s", PQerrorMessage(conn));
        PQclear(res);
        exit_nicely(conn);
    }
    PQclear(res);

    res = PQexec(conn, "FETCH ALL in myportal");
    if (PQresultStatus(res) != PGRES_TUPLES_OK)
    {
        fprintf(stderr, "FETCH ALL failed: %s", PQerrorMessage(conn));
        PQclear(res);
        exit_nicely(conn);
    }

    /* сначала напечатать имена атрибутов */
    nFields = PQnfields(res);
    for (i = 0; i < nFields; i++)
        printf("%-15s", PQfname(res, i));
    printf("\n\n");

    /* затем напечатать строки */
    for (i = 0; i < PQntuples(res); i++)
    {
        for (j = 0; j < nFields; j++)
            printf("%-15s", PQgetvalue(res, i, j));
        printf("\n");
    }

    PQclear(res);

    /* закрыть портал ... ошибки нас больше не интересуют ... */
    res = PQexec(conn, "CLOSE myportal");
    PQclear(res);

    /* завершить транзакцию */
    res = PQexec(conn, "END");
    PQclear(res);

    /* закрыть подключение к базе данных и провести очистку */
    PQfinish(conn);

    return 0;
}
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39413994
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот эти ошибки и означают что библиотека не подключена.
Не знаю какие там ошибки у тебя пропадали, но скорее всего, то были ошибки из-за отсутствия .h. Теперь еще подключи .lib и станет хорошо.
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39414022
ver__rev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,

Дополнительные каталоги включаемых: прописала путь "C:\Proram Files\PostgreSQL\9.5\include"
Дополнительные каталоги библиотек: прописала путь "C:\Proram Files\PostgreSQL\9.5\lib"
Дополнительные зависимости:libpq.ib

из-за этого пропало подчёркивание строки с бибиотекой #include <libpq-fe.h> ,но появились данные ошибки. Прописать lib ещё где-то надо? Спасибо.
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39414067
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ver__revДополнительные зависимости: libpq.ib
Уверены, что такой файл существует и имеет формат, совместимый с вашей версией линкера?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39414078
ver__rev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчёт того , что такой файл есть , уверена , а версию как проверить можете объяснить ? Спасибо .
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39414080
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ver__revНасчёт того , что такой файл есть , уверена
Именно с расширением "ib"?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39414081
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ver__revа версию как проверить можете объяснить ?
Точнее - не версию, а разрядность. Например, с помощью "dumpbin /headers".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39414157
ver__rev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет ,естественно не с таким расширением это у меня клавиатура замечательная,но исправив это не помогло. Теперь ещё и эту строчку подчёркивает #include <libpq-fe.h> и дальше соответственно тоже.
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39414194
ver__rev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
если я Вас правильно поняла ,то что-то такое получается и видимо разрядность 64. Но я путь путь до библиотеки в postgresql прописывала .
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39414222
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ver__rev,

ты просто базовые вещи не умеешь делать, а именно, использовать библиотеки.

Этому нужно отдельно научиться, попробуй что-то типа этого почитать:

https://msdn.microsoft.com/en-us/library/ms235627.aspx

Возможно, это не лучший тьюториал на эту тему, так как там классы рассматриваются, а у тебя C-шная библиотека, но сейчас я не могу найти ничего лучше.
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39414343
ver__rev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://www.cyberforum.ru/postgresql/thread1850924.html я делала вот как тут написано этих действий недостаточно ? Ещё нашла pragma comment , но это тоже не помогает . Не отрицаю, что не умею подключать библиотеки , но по ссылке там как-то сложно расписано . У многих проблема в том , что Postgres 64 , а студия 32 и приходится переустанавливать.
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39414442
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ver__revУ многих проблема в том , что Postgres 64 , а студия 32 и приходится переустанавливать.

Postgres может быть хоть 16, хоть 128 бит... Он в другом процессе и общение с ним идёт по сети.

Тебе нужно клиентские библиотеки для общения с PG иметь в том же виде, в котором твоё приложение собирается.
Если у тебя 32 бита, поставь и библиотеку для PG в виде 32 бит, это не трудно.
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39414444
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ver__rev http://www.cyberforum.ru/postgresql/thread1850924.html я делала вот как тут написано ...


авторДальше:
1 -> свойства проекта -> с++ -> общие -> Дополнительные каталоги включаемых файлов = H:\Android\C++\VisualStudio\Postgress
2 -> свойства проекта -> с++ -> общие -> Дополнительные каталоги включаемых файлов = H:\Android\C++\VisualStudio\Postgress\lib



Ну, так себе инструкция, парень в список каталогов с заголовками (include) прописывает каталог с библиотеками...


Чё он там ещё-то напридумывал ...

Код: plaintext
1.
2.
#pragma comment(lib, "libpq.dll")
#pragma comment(lib, "libpq.lib")



Он просто не врубается , что делает...

Не используй #pragma comment, кстати. Прописывай библиотеки руками в проекте.
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39415353
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivver__rev http://www.cyberforum.ru/postgresql/thread1850924.html я делала вот как тут написано ...


авторДальше:
1 -> свойства проекта -> с++ -> общие -> Дополнительные каталоги включаемых файлов = H:\Android\C++\VisualStudio\Postgress
2 -> свойства проекта -> с++ -> общие -> Дополнительные каталоги включаемых файлов = H:\Android\C++\VisualStudio\Postgress\lib



Ну, так себе инструкция, парень в список каталогов с заголовками (include) прописывает каталог с библиотеками...


Чё он там ещё-то напридумывал ...

Код: plaintext
1.
2.
#pragma comment(lib, "libpq.dll")
#pragma comment(lib, "libpq.lib")





Он просто не врубается , что делает...

Не используй #pragma comment, кстати. Прописывай библиотеки руками в проекте.


хмм.. девочька
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39415356
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ver__revЗдравствуйте, дали задание написать программу на с++ .которая позволяла бы выводить результаты запросов из postgres,

[/src]



а зачем вы занимаетесь этим экстримом, тем более будучи далёкой от этих вещей?

используйте odbc драйвер и не парьтесь
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39415713
ver__rev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин,

спасибо ,но я дала неточную формулировку моего задания.вот оно:Надо реализовать консольную программу, в которой будет меню позволяющее:
- вывести содержимое всей таблицы
- вывести какую-то одну строку по значению её id
- завершить программу
Для реализации используйте стандартный с++.
Так что мне нужно разобраться именно с этой библиотекой.
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39415717
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ver__rev,

не переживай. совет использовать ODBC был от человека который ее в глаза не видел
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39415889
ver__rev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делаю как в документации postgres:
https://postgrespro.ru/docs/postgresql/9.4/libpq-build.html

Включите заголовочный файл libpq-fe.h:

#include <libpq-fe.h>
-это сделала и в пустой проект подключила заголовочный файл с путём: c:\Program Files\PostgreSQL\9.5\include\libpq-fe.h

Дальше в документации написано :Сообщите вашему компилятору каталог, в котором установлены заголовочные файлы PostgreSQL, передав ему параметр -Iкаталог.

Если существует возможность, что вашу программу будут компилировать другие пользователи, то путь к каталогу не следует жёстко задавать таким образом. Вместо этого вы можете воспользоваться утилитой pg_config и узнать, где в локальной системе находятся заголовочные файлы, следующим образом:

$ pg_config --includedir
/usr/local/include
И вопрос: как передавать компилятору каталог?
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39416079
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинMasterZiv Он просто не врубается , что делает...

Не используй #pragma comment, кстати. Прописывай библиотеки руками в проекте.


хмм.. девочька


Топикстартер тут - девочка.
По ссылке топикстартер -- мальчик, или хотя бы хочет таким казаться, пишет о себе в мужском роде.
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39416080
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ver__revРолг Хупин,

спасибо ,но я дала неточную формулировку моего задания.вот оно:Надо реализовать консольную программу, в которой будет меню позволяющее:
- вывести содержимое всей таблицы
- вывести какую-то одну строку по значению её id
- завершить программу
Для реализации используйте стандартный с++.
Так что мне нужно разобраться именно с этой библиотекой.

Вам ведь не сказали использовать именно эту библиотеку, смысл усложнять?
Использование одбц в с++ разве делает приложение не стандартным с++?
Всё это можно легко сделать используя одбц.
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39416093
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинВсё это можно легко сделать используя одбц.
ODBC библиотека подключается сама собой?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39416112
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovРолг ХупинВсё это можно легко сделать используя одбц.
ODBC библиотека подключается сама собой?..
таки да, в Vusual Studio - по умолчанию подключается
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39416115
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovРолг ХупинВсё это можно легко сделать используя одбц.
ODBC библиотека подключается сама собой?..


девелопером, собственно и постгреосовская либ сама собой не подключается.
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39416277
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglver__rev,

не переживай. совет использовать ODBC был от человека который ее в глаза не видел


самое смешное, что именно одбц для постгреса я и видел, и даже делал в ней некоторые исправления.

По теме: как завещал большой специалист Крис Касперски - задачу нужно решать здесь и сейчас, в частности, а не пытаться делать сложное универсальное решение.

Судя по описанию задачи ТС нужно ее сделать быстро и красиво, было предложено использовать одбц.
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39416467
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

Т.е ты утверждаешь, что этот интерфейс проще?

https://code.msdn.microsoft.com/ODBC-sample-191624ae/sourcecode?fileId=51137&pathId=1980325953
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39416492
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglРолг Хупин,

Т.е ты утверждаешь, что этот интерфейс проще?

https://code.msdn.microsoft.com/ODBC-sample-191624ae/sourcecode?fileId=51137&pathId=1980325953

да, в данном случае для ТС будет проще, так мне имхуется.
Ведь речь не о сравнении интерфейсов, а о задаче, описанной ТС + её опыте + её высказываниях типа
"У многих проблема в том , что Postgres 64 , а студия 32 и приходится переустанавливать."

и т.д.
...
Рейтинг: 0 / 0
Подключение с++ и postgres с помощью библиотеки libpq
    #39416494
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglРолг Хупин,

Т.е ты утверждаешь, что этот интерфейс проще?

https://code.msdn.microsoft.com/ODBC-sample-191624ae/sourcecode?fileId=51137&pathId=1980325953
а что сложного?
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подключение с++ и postgres с помощью библиотеки libpq
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]