2013-02-26 27 views
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,然後?

+0

libsqlite3.so在LD_LIBRARY_PATH中還是在系統的標準庫搜索路徑之一中? – Tuxdude 2013-02-26 21:16:09

+1

我敢打賭你只需要在第二次調用GCC時添加'-lsqlite3'。第一次不需要它。 – Collin 2013-02-26 21:16:18

回答

1

正如科林說,我在第二次海灣合作委員會語句所需-sqlite3:

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

對不起,我簡單的問題,那麼,但這是一個具體的問題,我無法找到解決辦法看着谷歌

再次感謝您Collin