Я пытаюсь в первый раз создать общую библиотеку для ее использования с интерфейсом внешних функций SWI-Prolog, но я не могу правильно связать sqlite3. Я на самом деле это сделать:Создание общей библиотеки в C, проблемы с sqlite3
gcc -c -fpic task_resources.prolog.c -I/usr/lib/swi-prolog/include/ -lsqlite3
gcc -shared -o task_resources.so task_resources.prolog.o
cp /home/markmb/task_resources.so /usr/lib/swi-prolog/lib/amd64/task_resources
Тогда у меня есть манекен файла пролога:
dbg_task_resources :-
use_foreign_library(foreign(task_resources)),
getTaskState("id01",Result),
write(Result).
На прологе intepreter, я называю этот файл и функтор:
[prueba].
dbg_task_resources.
И я получаю в результате:
prolog: symbol lookup error: /usr/lib/swi-prolog/lib/amd64/task_resources: undefined symbol: sqlite3_open
Как следует Тогда я связываю sqlite3?
Является ли местоположение libsqlite3.so в вашем LD_LIBRARY_PATH или в одном из стандартных путей поиска библиотеки библиотеки? – Tuxdude
Держу пари, вам просто нужно добавить '-lsqlite3' ко второму звонку в GCC. Это не нужно в первом. – Collin