Хотя вы правильно включили заголовки, необходимые для компиляции с библиотекой PostgreSQL, вы не связываете ни одну из разделяемых библиотек, необходимых для создания конечного исполняемого файла. Вы должны изменить свою окончательную команду компиляции на что-то вроде следующего для gcc в Linux:
cc -c -fPIC makepoint.c -o makepoint.o
cc -shared --relocatable -o libmakepoint.so makepoint.o
cc -L/usr/local/pgsql/lib -lpq -L. -lmakepoint -o myapp.exe main.c
Затем вам нужно будет убедиться, что ваш локальный каталог, в котором находится libmakepoint.so
, доступен для динамического компоновщика во время выполнения, либо определив путь в LD_LIBRARY_PATH
вашей среды, либо добавив конфигурацию в ld_config
. Вы можете прочитать больше об этом процессе здесь .
Обратите внимание, что ваши установочные каталоги могут отличаться в зависимости от того, как вы установили PostgreSQL, а также от вашей платформы, но, поскольку вы используете MSYS2, вы сможете установить pkg-config
и использовать различные --cflags
, --includedir
, --libs
и --libdir
команды, чтобы получить соответствующие каталоги поиска и имена библиотек для ссылки. Например:
pkg-config --libs libpq
выведет (в зависимости от вашей конфигурации):
-L/usr/local/pgsql/lib -lpq
и затем вы можете добавить эту строку в команду сборки, чтобы связать ее с правильными библиотеками, а также указать компилятору правильный путь к библиотеке.
Наконец, вы можете обратиться к этой странице для получения дополнительных инструкций по сборке.