编译phash程序时遇到麻烦

时间:2012-06-10 10:45:36

标签: c++ compilation undefined-reference phash

这里有一些(可能)非常简单的问题:我正在尝试使用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

2 个答案:

答案 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文件的位置)