2013-02-26 3 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

+1

Держу пари, вам просто нужно добавить '-lsqlite3' ко второму звонку в GCC. Это не нужно в первом. – Collin

ответ

1

Как сказал Коллин, мне нужно -sqlite3 во втором Gcc заявления:

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

Извините за простой вопрос, то, но это конкретный вопрос, и я не мог найти решение, глядя на Google

Еще раз спасибо Collin

Смежные вопросы