这里有一些(可能)非常简单的问题:我正在尝试使用Ubuntu 11.10的感知散列库pHash。我已经安装了ffmpeg,就像我做的那样:
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'
有什么建议吗?我该怎么办? 提前谢谢!
Matteo Monti
答案 0 :(得分:2)
您没有链接到图书馆。标题包含库内容的定义。实际实现在库本身。您可以静态或动态链接到它。
如果您正在使用make,请将库路径添加到makefile并重新编译:
LIBS = -L/path/to/your/lib -lyourlib
如果库安装在系统中,它可能位于已知路径之一。 (/ usr / lib /或......)。所以尝试添加:
LIBS = -lyourlib
注意:让系统将-lname
解释为<path>/libname.so
。并非总是如此,但几乎就是这样。
答案 1 :(得分:2)
您当然忘记链接pHash库,因此链接器无法找到此功能。
尝试将-l pHash
添加到您的GCC命令行(或更新您的makefile)。如果它不起作用,也许您还需要使用-L "/usr/lib/"
指定库路径(* .a文件的位置)