C++ 编译phash程序时遇到的问题
这里有一个(可能)非常简单的问题:我试图在Ubuntu11.10中使用感知哈希库pHash。我已经安装了ffmpeg,顺便说一下,这就是我所做的:C++ 编译phash程序时遇到的问题,c++,compilation,undefined-reference,phash,C++,Compilation,Undefined Reference,Phash,这里有一个(可能)非常简单的问题:我试图在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() { ulong6
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;
}
有什么建议吗?我该怎么办?
提前谢谢
Matteo Monti您没有链接到该库。标题包含库内容的定义。实际实现在库本身中。您可以静态或动态链接到它 如果使用make,请将库路径添加到makefile并重新编译:
LIBS = -L/path/to/your/lib -lyourlib
若库安装在系统中,它可能位于已知路径之一。(/usr/lib/or…)。因此,请尝试添加:
LIBS = -lyourlib
注意:使系统将
-lname
解释为/libname.so
。不一定是真的,但差不多就是这样 您没有链接到库。标题包含库内容的定义。实际实现在库本身中。您可以静态或动态链接到它
如果使用make,请将库路径添加到makefile并重新编译:
LIBS = -L/path/to/your/lib -lyourlib
若库安装在系统中,它可能位于已知路径之一。(/usr/lib/or…)。因此,请尝试添加:
LIBS = -lyourlib
注意:使系统将
-lname
解释为/libname.so
。不一定是真的,但差不多就是这样 您肯定忘了链接pHash库,因此链接器无法找到此函数
尝试将
-l pHash
添加到GCC命令行(或更新makefile)。如果它不起作用,您可能还需要使用-L”/usr/lib/“
指定库路径(*.a文件的位置),您肯定忘了链接pHash库,因此链接器找不到此函数
尝试将-l pHash
添加到GCC命令行(或更新makefile)。如果不起作用,您可能还需要使用-L”/usr/lib/“
Good:)指定库路径(*.a文件的位置)而且。。。我该怎么做?我应该包括更多吗?对不起,我知道这是一个愚蠢的问题,但我没有经验!好!:)而且。。。我该怎么做?我应该包括更多吗?对不起,我知道这是一个愚蠢的问题,但我没有经验!