這是我第一次嘗試製作一個簡單的庫。我使用g ++ 4.6.3在Ubuntu 12.04中工作。這裏的問題是:我自己的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
我使用的庫,其中僅包含main()的一個單一的TEST.CPP。我在./libdir把libmylib.so,並通過編譯:
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'
感謝您的輸入。你的答案和zakinster一樣正確。但我會接受他,因爲他比你早一點回答。附:在我的例子中所有的名字都是假的,但是謝謝你指出測試是shell內置的。 – GuLearn
你可以upvote我的回覆.... –
謝謝你指出,我編譯庫時可以鏈接sqlite3! – GuLearn