在C中创建共享库,sqlite3存在问题

时间:2013-02-26 21:14:10

标签: c sqlite shared-libraries swi-prolog

我第一次尝试使用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呢?

1 个答案:

答案 0 :(得分:1)

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

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

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

再次感谢Collin