2012-06-10 89 views
0

這裏有一些(可能)非常簡單的問題:我試圖在Ubuntu 11.10中使用感知哈希庫pHash。我已經安裝了ffmpeg的,順便說一下,這是我做了什麼:編譯phash程序時遇到的問題

sudo apt-get install libphash0 
sudo apt-get install libphash0-dev 

然後試圖編譯此程序:

#include <iostream> 

#include <pHash.h> 

using namespace std; 

int main() 
{ 
    ulong64 myhash=0; 

    ph_dct_imagehash("test.jpg", myhash); 
    cout<<myhash<<endl; 
} 

編譯時,它只是打印出:

undefined reference to `ph_dct_imagehash' 

有什麼建議嗎?我該怎麼辦? 在此先感謝!

利瑪竇蒙蒂

回答

2

你沒有鏈接到庫。標題包含庫內容的定義。實際的實現是在庫本身。您可以靜態或動態鏈接到它。

如果您使用使,加庫路徑爲Makefile並重新編譯:

LIBS = -L/path/to/your/lib -lyourlib 

如果庫安裝到系統中,它可能是已知的路徑之一。 (/ usr/lib /或...)。因此,嘗試添加:

LIBS = -lyourlib 

注:使系統解釋-lname<path>/libname.so。並非總是如此,但它幾乎就是這樣。

+0

指定庫路徑(* .a文件的位置)好! :)而且...我怎麼做到這一點?我應該包括更多的東西嗎?對不起,我知道這是一個愚蠢的問題,但我沒有經驗! –

+0

沒問題;)我剛編輯答案。 –

2

你當然忘了鏈接pHash庫,所以鏈接器找不到這個函數。

嘗試將-l pHash添加到您的GCC命令行(或更新您的生成文件)。如果它不起作用,也許你還需要使用-L "/usr/lib/"

相關問題