2012-06-10 3 views
0

вот некоторые (возможно) очень простые проблемы: я пытаюсь использовать библиотеку хэширования восприятия pHash с Ubuntu 11.10. Я уже был установлен FFmpeg, кстати, это то, что я сделал:Сложности при компиляции 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' 

Любое предложение? Что мне делать? Спасибо заранее!

Matteo Monti

ответ

2

Вы не ссылаются на библиотеку. Заголовки содержат определение содержимого библиотеки. Фактическая реализация выполняется в самой библиотеке. Вы можете ссылаться на него как статически, так и динамически.

Если вы используете сделать, добавьте библиотеку путь к Makefile и перекомпилировать:

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

Если библиотека установлена ​​в системе, это, вероятно, в одном из известных путей. (/ usr/lib/или ...). Так попробуйте добавить:

LIBS = -lyourlib 

Примечание: делают система интерпретирует -lname, как <path>/libname.so. Не всегда верно, но это почти так.

+0

Хорошо! :) И ... как мне это сделать? Должен ли я включить что-то еще? Извините, я знаю, что это глупый вопрос, но у меня нет опыта! –

+0

Нет проблем;) Я только что отредактировал ответ. –

2

Вы, конечно, забыли связать библиотеку pHash, чтобы линкер не смог найти эту функцию.

Попробуйте добавить -l pHash в вашу командную строку GCC (или обновите свой файл). Если это не сработает, возможно, вам также потребуется указать путь к библиотеке (расположение файла * .a) с помощью -L "/usr/lib/"

 Смежные вопросы

  • Нет связанных вопросов^_^