1
我想第一次創建一個共享庫,以便將它與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 2013-02-26 21:16:09
我敢打賭你只需要在第二次調用GCC時添加'-lsqlite3'。第一次不需要它。 – Collin 2013-02-26 21:16:18