1

ここに(おそらく)非常に単純な問題があります。Ubuntu 11.10で知覚ハッシュライブラリpHashを使用しようとしています。ちなみに、これは私が行ったことです:

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

あなたは確かにpHashライブラリをリンクするのを忘れたので、リンカーはこの関数を見つけることができません。

GCCコマンドラインに追加-l pHashしてみてください(またはmakefileを更新してください)。それが機能しない場合は、ライブラリパス(* .aファイルの場所)を使用して指定する必要があるかもしれません。-L "/usr/lib/"

于 2012-06-10T11:03:13.057 に答える
2

ライブラリにリンクしていません。ヘッダーには、ライブラリ コンテンツの定義が含まれます。実際の実装はライブラリ自体にあります。静的または動的にリンクできます。

make を使用している場合は、ライブラリ パスを makefile に追加して再コンパイルします。

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

ライブラリがシステムにインストールされている場合、それはおそらく既知のパスの 1 つにあります。(/usr/lib/ または ...)。追加してみてください:

LIBS = -lyourlib

注: make system は として解釈-lname<path>/libname.soます。常に正しいとは限りませんが、ほぼそのようです。

于 2012-06-10T11:02:19.557 に答える