2012-06-10 2 views
0

Voici quelques problèmes (probablement) très simples: J'essaie d'utiliser la bibliothèque de hachage perceptuelle pHash avec Ubuntu 11.10. J'avais déjà installé ffmpeg, par la façon dont ce que je l'ai fait:Problèmes lors de la compilation du programme phash

sudo apt-get install libphash0 
sudo apt-get install libphash0-dev 

ensuite essayé de compiler ce programme:

#include <iostream> 

#include <pHash.h> 

using namespace std; 

int main() 
{ 
    ulong64 myhash=0; 

    ph_dct_imagehash("test.jpg", myhash); 
    cout<<myhash<<endl; 
} 

Lors de la compilation, il se contente d'afficher:

undefined reference to `ph_dct_imagehash' 

Une suggestion? Que devrais-je faire? Merci d'avance!

Matteo Monti

Répondre

2

Vous n'avez pas un lien vers la bibliothèque. Les en-têtes contiennent la définition du contenu de la bibliothèque. L'implémentation réelle est dans la bibliothèque elle-même. Vous pouvez créer un lien statique ou dynamique.

Si vous utilisez faire, ajoutez votre chemin bibliothèque makefile et recompiler:

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

Si la bibliothèque est installée dans le système, il est probablement l'un des chemins connus. (/ usr/lib/ou ...). Alors essayez d'ajouter:

LIBS = -lyourlib 

Note: système make interprète -lname comme <path>/libname.so. Pas toujours vrai, mais c'est presque comme ça.

+0

Bon! :) Et ... comment je fais ça? Dois-je inclure quelque chose de plus? Désolé, je sais que c'est une question stupide mais je n'ai aucune expérience! –

+0

Pas de problème;) Je viens d'éditer la réponse. –

2

Vous avez certainement oublié de lier la bibliothèque pHash, de sorte que l'éditeur de liens ne trouve pas cette fonction.

Essayez d'ajouter -l pHash à votre ligne de commande GCC (ou mettre à jour votre makefile). Si cela ne fonctionne pas, vous aurez peut-être besoin aussi de spécifier le chemin de la bibliothèque (l'emplacement du fichier * .a) en utilisant -L "/usr/lib/"

Questions connexes