这里有一些(可能)非常简单的问题:我试图在Ubuntu11.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'有什么建议吗?我该怎么办?提前感谢!
马泰奥·蒙蒂
发布于 2012-06-10 19:02:20
你没有链接到图书馆。头文件包含库内容的定义。实际的实现在库本身。您可以静态或动态地链接到它。
如果你使用make,将你的库路径添加到makefile并重新编译:
LIBS = -L/path/to/your/lib -lyourlib如果库安装在系统中,它可能位于某个已知路径中。(/usr/lib/或...)。因此,尝试添加:
LIBS = -lyourlib注意: make系统将-lname解释为<path>/libname.so。并不总是正确的,但几乎就是这样。
发布于 2012-06-10 19:03:13
您肯定忘了链接pHash库,所以链接器找不到这个函数。
尝试将-l pHash添加到您的GCC命令行(或更新您的makefile)。如果不起作用,您可能还需要使用-L "/usr/lib/"指定库路径( *.a文件的位置
https://stackoverflow.com/questions/10968049
复制相似问题