1

这是一些(可能)非常简单的问题:我正在尝试将感知散列库 pHash 与 Ubuntu 11.10 一起使用。我已经安装了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'

有什么建议吗?我应该怎么办?提前致谢!

马泰奥·蒙蒂

4

2 回答 2

2

你没有链接到图书馆。标题包含库内容的定义。实际实现在库本身中。您可以静态或动态链接到它。

如果您使用的是 make,请将您的库路径添加到 makefile 并重新编译:

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

如果库安装在系统中,它可能位于已知路径之一。(/usr/lib/ 或 ...)。所以尝试添加:

LIBS = -lyourlib

注意: make system 解释-lname<path>/libname.so. 并非总是如此,但几乎就是这样。

于 2012-06-10T11:02:19.557 回答
2

你肯定忘了链接 pHash 库,所以链接器找不到这个函数。

尝试添加-l pHash到您的 GCC 命令行(或更新您的 makefile)。如果它不起作用,也许您还需要使用指定库路径(*.a 文件的位置)-L "/usr/lib/"

于 2012-06-10T11:03:13.057 回答