1

我第一次尝试创建一个共享库,以便将它与 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呢?

4

1 回答 1

1

正如科林所说,我在第二个 gcc 语句中需要 -sqlite3 :

gcc -shared -o task_resources.so task_resources.prolog.o -lsqlite3

很抱歉这个简单的问题,但这是一个特定的问题,我在谷歌上找不到解决方案

再次感谢科林

于 2013-02-26T21:21:01.300 回答