我第一次尝试使用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
然后我有一个假的prolog文件:
dbg_task_resources :-
use_foreign_library(foreign(task_resources)),
getTaskState("id01",Result),
write(Result).
在prolog intepreter中,我调用文件和仿函数:
[prueba].
dbg_task_resources.
我得到了结果:
prolog: symbol lookup error: /usr/lib/swi-prolog/lib/amd64/task_resources: undefined symbol: sqlite3_open
我应该如何链接sqlite3呢?
答案 0 :(得分:1)
正如科林所说,我在第二个gcc语句中需要-sqlite3:
gcc -shared -o task_resources.so task_resources.prolog.o -lsqlite3
很抱歉这个简单的问题,但这是一个特定的问题,我找不到解决方案的问题
再次感谢Collin