我有兩個項目,一個是使用libpq頭文件和可執行文件的庫,它鏈接到我的庫和libpq,但不管我如何放入makefile,它只是不鏈接libpq和aways返回給我一個未定義的引用錯誤。它鏈接我的lib好吧。未定義的libpq函數參考
g++ -o MYAPP main.o -L../Libs -lpq -lMYLIB
libpq.a和libmylib.a都在Libs目錄中。
我用nm來檢查函數,他們在那裏,我改變了-lpq到-lpq_並且編譯器抱怨缺少的lib,所以它找到並且理論上是鏈接,但是找不到引用?
這真的讓我感到困擾,它會是什麼?
(我的英文不是很好,抱歉)
感謝,
喬納森
我添加了extern「C」{#include「libpq-fe.h」}並且沒有工作 – Jonathan 2010-11-21 00:41:47
AFAIK,鏈接順序與動態庫無關,但如果你還沒有嘗試過,你可以反向'-lpq'和'-lMYLIB'。 – dennycrane 2010-11-21 00:52:39
我這樣做了,然後它給了我更多未經驗證的錯誤,但對於libpq中的其他東西,比如kerberus,這讓我感到困惑。但現在它正在工作......我所做的就是刪除我創建的用於鏈接目的的Libs目錄,然後通過apt-get安裝libpq,並讓g ++鏈接到這個新的lib,然後它不會再給我錯誤。我猜它也與其他圖書館有聯繫?這對我來說是有點新聞。如果有人解釋...... – Jonathan 2010-11-21 01:01:05