2012-08-28 27 views
7

Próbuję uruchomić jeden z przykładów samouczka z OpenCV. Chodzi o znalezienie znanego obiektu za pomocą dopasowania punktów klucza Flann. Kod można znaleźć pod numerem Features2D + Homography to find a known object.Flann działa nierozwiązany externals

Wiem, że zapytasz "Czy połączyłeś biblioteki?" lub podobne pytanie. Tak, używam OpenCV przez 3 tygodnie z różnymi przykładami, które wykorzystują prawie wszystkie biblioteki. Do tego dnia nie było problemu.

Więc dodałem te zależności biblioteki do ustawień wejściowych linkera Visual Studio. Obejmują katalogi również działają dobrze.

C:\OpenCV2.4\lib\opencv_core242d.lib 
C:\OpenCV2.4\lib\opencv_highgui242d.lib 
C:\OpenCV2.4\lib\opencv_video242d.lib 
C:\OpenCV2.4\lib\opencv_ml242d.lib 
C:\OpenCV2.4\lib\opencv_legacy242d.lib 
C:\OpenCV2.4\lib\opencv_imgproc242d.lib 
C:\OpenCV2.4\lib\opencv_objdetect242d.lib 
C:\OpenCV2.4\lib\opencv_flann242d.lib 
C:\OpenCV2.4\lib\opencv_nonfree242d.lib 
C:\OpenCV2.4\lib\opencv_calib3d242d.lib 

Błąd, który otrzymałem, to błąd łącznika. Nie może rozwiązać funkcji Flann.

1>------ Build started: Project: flannMatch, Configuration: Debug Win32 ------ 
1>flannMatch.obj : error LNK2019: unresolved external symbol "void __cdecl cv::drawMatches(class cv::Mat const &,class std::vector<class cv::KeyPoint,class std::allocator<class cv::KeyPoint> > const &,class cv::Mat const &,class std::vector<class cv::KeyPoint,class std::allocator<class cv::KeyPoint> > const &,class std::vector<struct cv::DMatch,class std::allocator<struct cv::DMatch> > const &,class cv::Mat &,class cv::Scalar_<double> const &,class cv::Scalar_<double> const &,class std::vector<char,class std::allocator<char> > const &,int)" ([email protected]@@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@@[email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@@[email protected]@Z) referenced in function _main 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: void __thiscall cv::DescriptorMatcher::match(class cv::Mat const &,class cv::Mat const &,class std::vector<struct cv::DMatch,class std::allocator<struct cv::DMatch> > &,class cv::Mat const &)const " ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@@[email protected]@[email protected]) referenced in function_main 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: __thiscall cv::FlannBasedMatcher::FlannBasedMatcher(class cv::Ptr<struct cv::flann::IndexParams> const &,class cv::Ptr<struct cv::flann::SearchParams> const &)" ([email protected]@@[email protected][email protected]@[email protected]@@@[email protected][email protected]@[email protected]@@@[email protected]@Z) referenced in function _main 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: void __thiscall cv::DescriptorExtractor::compute(class cv::Mat const &,class std::vector<class cv::KeyPoint,class std::allocator<class cv::KeyPoint> > &,class cv::Mat &)const " ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@@[email protected]@[email protected]@Z) referenced in function _main 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: void __thiscall cv::FeatureDetector::detect(class cv::Mat const &,class std::vector<class cv::KeyPoint,class std::allocator<class cv::KeyPoint> > &,class cv::Mat const &)const " ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@@[email protected]@[email protected]) referenced in function _main 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall cv::DescriptorMatcher::~DescriptorMatcher(void)" ([email protected]@@[email protected]) referenced in function "public: virtual __thiscall cv::FlannBasedMatcher::~FlannBasedMatcher(void)" ([email protected]@@[email protected]) 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall cv::DescriptorMatcher::DescriptorCollection::~DescriptorCollection(void)" ([email protected]@[email protected]@[email protected]) referenced in function "public: virtual __thiscall cv::FlannBasedMatcher::~FlannBasedMatcher(void)" ([email protected]@@[email protected]) 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall cv::FeatureDetector::~FeatureDetector(void)" ([email protected]@@[email protected]) referenced in function "public: virtual __thiscall cv::Feature2D::~Feature2D(void)" ([email protected]@@[email protected]) 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall cv::DescriptorExtractor::~DescriptorExtractor(void)" ([email protected]@@[email protected]) referenced in function "public: virtual __thiscall cv::Feature2D::~Feature2D(void)" ([email protected]@@[email protected]) 

wiem również, że fale i przesiać została przeniesiona do nonfree, dzięki jednemu z pytań tutaj. Na pierwszy rzut oka wydawało mi się, że to możliwe, ponieważ mam dwie wersje OpenCV (2.2 i 2.4) i dlatego to robiło różnicę. Usunąłem więc 2.2 i próbowałem uruchomić inny program. To działało dobrze, ale nadal ten błąd nie zniknął.

Moje pytanie, czego tu brakuje? Czy istnieje inna zależność od biblioteki? Czego nie mogę zobaczyć? Każda pomoc jest doceniana.

- EDIT -

Jak mogłem nie zobaczyć? Naprawdę przepraszam za zamieszczanie łatwych pytań w ten sposób. Czuję się tak głupi. Zapomniałem dodać tę zależność.

C:\OpenCV2.4\lib\opencv_features2d242d.lib 

Nie sądzę, by ktokolwiek znowu tęsknił.

+0

Nie jesteś pierwszą ani ostatnią osobą, która znajdzie odpowiedź wkrótce po zamieszczeniu pytania :). Dziękujemy za podzielenie się z nami odpowiedzią. – bjoernz

+0

Jednak odpowiedź powinna być udostępniana jako * odpowiedź *, a nie jako część pytania. –

+0

Wiem, ale ze względu na reputację, nie mogę odpowiedzieć na moje pytania, aż minęło 8 godzin. Jeszcze 6 godzin do pracy: D – yutasrobot

Odpowiedz

2

Jak mogłem go nie widzieć? Naprawdę przepraszam za zamieszczenie tak łatwego pytania. Czuję się tak głupi. Zapomniałem dodać tę zależność.

C:\OpenCV2.4\lib\opencv_features2d242d.lib 

Nie sądzę, by ktokolwiek znowu tęsknił.

Powiązane problemy