Данный пост ни на что не претендует, а написан мной в целях помочь таким-же недопрограммистам как я. Возможно, если бы я прочитал документацию по этой API полностью, то этой статьи бы и не понадобилось. Однако, в свою защиту скажу, что я не нашел внятной инструкции для чайников.

Я столкнулся с рядом проблем при попытке подключить libpq в VS 2017: начиная с несоответствия документации по данной API с инструкциями по подключению, заканчивая умолчанием некоторых ключевых моментов.

В общем по порядку.

Для использования данного API нужны следующие библиотеки и файлы:

  • libpq.dll и libpq.lib - собственно само API Последнее упоминание в документации о возможности сборки ее для Windows находится в 9й версии. В 10+ этого уже нет. Таким образом проще всего сделать так: ставим postgresql нужной версии и берем оттуда папку PostgreSQL\{номер версии}\lib. Копируем куда нужно и в VS указываем в свойствах проекта Свойства конфигурации>Каталоги VC++> Каталоги библиотек. Далее указываем libpq.lib в Свойства конфигурации>Компоновщик> Ввод >Дополнительные зависимости.

  • libpq-fe.h - заголовочный файл для API. В месте со всеми остальными заголовочными файлами находится в исходниках postgresql. Качаем с офф сайта (https://ftp.postgresql.org/pub/source/v12.0/postgresql-12.0.tar.gz ) нужную версию postgresql. Заголовочные лежат в postgresql-{номер версии}\src\interfaces\libpq. Эту папку подключаем в Свойства конфигурации>Каталоги VC++> Включаемые каталоги. Так же, я подключил сюда и эти каталоги : "\src\include" "\include\libpq" "\src\interfaces" (скажем так, на всякий).

  • libintl-8.dll, libiconv-2.dll - лежат в папке с установленным postgres ("PostgreSQL\{номер версии}\bin"). Нужно скопировать в Windows\system32 либо в папку с собранным exe программы.

  • libcrypto-1_1-x64.dll, libssl-1_1-x64.dll - библиотеки OpenSSL. Либо ставим его (выбирая при установке, копирование библиотек в папку system32), либо берем эти библиотеки с уже установленного openssl (C:\Program Files\OpenSSL-Win64\bin) и копируем в папку программы или system32 сами.

    Далее еще один момент. В моем случае, платформу проекта пришлось выбрать x64.

    На этом все. Добавляем #include <libpq-fe.h> в программу и работаем