web-dev-qa-db-fra.com

Problème de compilation OpenCV 2.3 - Référence non définie - Ubuntu 11.10

Merci d'avance pour votre aide...

Informations système: Ubuntu 11.10 (64 bits) avec OpenCV 2.3 (installé aujourd'hui)

J'essaie de compiler du code très simple dans OpenCV 2.3 mais j'obtiens une erreur étrange.

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

int main(){
  cv::Mat image=cv::imread("img.jpg");
  cv::namedWindow("My Image");
  cv::imshow("My Image",image);
  cv::waitKey(0);
  return 1;
}

howeverrrrrrrrrrrrr, je reçois ces messages d'erreur ...

-SG41:~/Desktop$ g++ `pkg-config opencv --cflags --libs` -o test_1 test_1.cpp 
/tmp/ccCvS1ys.o: In function `main':
test_1.cpp:(.text+0x44): undefined reference to `cv::imread(std::basic_string<char,    std::char_traits<char>, std::allocator<char> > const&, int)'
test_1.cpp:(.text+0x8e): undefined reference to `cv::namedWindow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
test_1.cpp:(.text+0xbc): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
test_1.cpp:(.text+0xf0): undefined reference to `cv::imshow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)'
test_1.cpp:(.text+0x112): undefined reference to `cv::waitKey(int)'
/tmp/ccCvS1ys.o: In function `cv::Mat::~Mat()':
test_1.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x39): undefined reference to `cv::fastFree(void*)'
/tmp/ccCvS1ys.o: In function `cv::Mat::release()':
test_1.cpp:(.text._ZN2cv3Mat7releaseEv[cv::Mat::release()]+0x47): undefined reference to `cv::Mat::deallocate()'
collect2: ld returned 1 exit status
37
user1002414

Je devine qu'au moins certaines des bibliothèques dans la sortie de

pkg-config opencv --libs

sont des bibliothèques d'archives. Il est incorrect de placer les bibliothèques d'archives avant les sources qui en ont besoin (test_1.cpp dans ce cas): l'ordre des sources et des bibliothèques sur la ligne de liaison Matters .

Essayer

g++ -o test_1 test_1.cpp `pkg-config opencv --cflags --libs` 
73
Employed Russian

J'avais le même problème, mais j'ai découvert pkg-config opencv --cflags affiche "-I/usr/include/opencv" au lieu de "-I/usr/include/opencv2" ... Peut-être un bogue sur Ubuntu? 

2
dividebyzero

J'utilise cmake et j'ai eu des problèmes similaires.

Quelque chose de bizarre se passe avec les fichiers de configuration de cmake.

Pour moi, les problèmes ont été résolus en définissant simplement OPENCV_FOUND sur TRUE et OpenCV_FOUND sur TRUE.

De plus, je devais définir OpenCV_DIR sur/usr/local/share/OpenCV.

Voir aussi Erreur CMake lors de la configuration ouverte

0
Tim Kuipers

La réponse de @EmployedRussian a également fonctionné pour moi. Pour ceux qui se demandent comment spécifier cette commande dans Eclipse, utilisez ce post - 

https://www.Eclipse.org/forums/index.php?t=msg&goto=233377&

Au lieu d’ajouter gtk +, utilisez opencv; Au lieu d’ajouter les nouveaux indicateurs à la catégorie "Drapeaux de l’éditeur de liens divers", ajoutez-les à la fin après $ {INPUT} in - > Construction C/C++ -> Paramètres-> Éditeur de liens GCC C++-> Paramètres experts: modèle de ligne de commande

0
IEEE754