我第一次尝试创建一个共享库,以便将它与 SWI-Prolog 外部函数接口一起使用,但我无法正确链接 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).
在序言解释器中,我调用文件和仿函数:
[prueba].
dbg_task_resources.
我得到了结果:
prolog: symbol lookup error: /usr/lib/swi-prolog/lib/amd64/task_resources: undefined symbol: sqlite3_open
那我应该如何链接sqlite3呢?