Это моя первая попытка создать простую библиотеку. Я работал в Ubuntu 12.04 с g ++ 4.6.3. Здесь проблема:Ошибка связи с моей собственной библиотекой C++
[[mylib.cpp]]
#include<sqlite3.h>
void Mylib::blahblah() {...}
void Mylib::evenmoreblah() {...}
...
[[mylib.h]]
#include <...>
class Mylib {
...
};
Затем я сделал LIB по:
gcc -c -Wall -fpic mylib.cpp
gcc -shared -o libmylib.so mylib.o
Я использовал библиотеку в одном test.cpp, который содержит только основной(). Я положил libmylib.so в ./libdir и скомпилирован с помощью:
g++ -g test.cpp -o test -lpthread -L/usr/local/lib -lsqlite3 -L./libdir -lmylib
ошибка я получил:
./libdir/libmylib.so: undefined reference to `sqlite3_close'
./libdir/libmylib.so: undefined reference to `sqlite3_exec'
./libdir/libmylib.so: undefined reference to `sqlite3_free'
./libdir/libmylib.so: undefined reference to `sqlite3_open'
Благодарим вас за ввод. Ваш ответ такой же правильный, как у Закинстера. Но я бы согласился с ним, так как он ответил немного раньше, чем вы. постскриптум все имена в моем примере являются поддельными, но спасибо за указание, что тест - это встроенная оболочка. – GuLearn
Вы могли бы поддержать мой ответ .... –
Спасибо, что указали, что я могу связать sqlite3 при компиляции библиотеки! – GuLearn