OpenCV verknüpfen Probleme mit ROS
Ich versuche zu kompilieren diese Projekt (nach den Anweisungen). Wenn Gebäude mit rosmake
ich bekommen eine Menge von undefined reference to cv::String::deallocate()
und undefined reference to cv::String::allocate(unsigned long)
. Ich finde merkwürdig, dass ich bin immer ein Fehler nur in diese Funktionen während der rest der OpenCV-Funktionen scheinen ordnungsgemäß zu funktionieren.
Ich weiß, dies geschieht, da der linker nicht finden können, die Objekte, bei denen diese Funktionen kompiliert wurden, aber ich bin irgendwie neu auf dem ROS build-system, und kann nicht finden, was falsch ist.
Ich habe versucht, mit der CMakeLists.txt
- Datei zur Verfügung gestellt, und auch das hinzufügen find_package(OpenCV REQUIRED)
und target_link_libraries(xxx xxx ${OpenCV_LIBRARIES})
, ohne, dass macht keinen Unterschied. Ich weiß, OpenCV installiert und kompiliert werden, richtig (ich habe es vor), und ich hatte ROS installiert ohne Probleme.
Ich bin mit OpenCV 3, ROS Indigo, Ubuntu 14.04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das exakt gleiche problem - gleiche Fehlermeldungen, gleiche setup. Ich habe es geschafft, es zu lösen, aber ich bin mir nicht genau sicher sind die Schritte, die ich Tat, die eigentlich dazu beigetragen. Soweit ich das beurteilen kann, war es aufgrund eines Konfliktes OpenCV-Versionen - ich glaube, ich hatte in den alten Versionen von OpenCV überladen meine /usr/include und /usr/local. Ich deinstalliert alle OpenCV-Pakete (einschließlich der ROS sind) und auch meine aus-Quelle installieren von OpenCV3 (auch in /usr/local). Ich habe dann installiert die ROS-Paket vision_opencv, die schien zu installieren OpenCV 2.4.8 (übrigens das empfohlene von LSD-SLAM). Das kann natürlich lästig sein, wenn Sie brauchen, OpenCV3 für andere Dinge, aber ich habe nun wie eine lokale Installation in meinem home-Verzeichnis (ich konnte nicht herausfinden, wie man ROS für die Verlinkung auf diese).
Ich denke, dass dadurch das problem gelöst ist, geht es nur noch war, dass ich Fehlermeldungen bekommen habe sagen wurde nicht gefunden. Dies war, weil das Paket installieren lässt es (ähnlich wie für alle Modul-include-Dateien), in der Erwägung, dass der "make install" Schritt, der von der Quelle installieren, kopiert Sie in den übergeordneten Ordner. Um dies zu umgehen habe ich einfach bearbeitet die #include-in die einzige Datei, in der es verwendet wird (lsd_slam_core/src/IOWrapper/OpenCV/ImageDisplay_OpenCV.cpp). Das schien es zu lösen!
Ich hoffe das hilft, kann ich weitere details, wenn nötig.
Ich bin mit OpenCV 3.1.0(Bleeding edge), ROS Indigo, Ubuntu 14.04.
Ich lief in ähnliche Probleme, wenn Sie versuchen zu kompilieren LSD-SLAM -
Fügte ich hinzu:
Ich habe auch opencv libs auf Ziel-link libs:
Hier ist meine CMakeLists.txt Datei:
Haben Sie multi-Versionen Opencv? wenn Sie haben, vielleicht sollten Sie den Pfad zu
OpenCVConfig.cmake
inCmakeList.txt
. Nur unter dercmake_minimum_required(VERSION 2.8.12)
,etwa so:Das ist alles.
Hatte ich auch den samme Problem. Konnte nicht kommentieren, Osian ' s-Lösung aufgrund mangelnder rep, aber das ist die Prozedur, die ich verwendet:
Wenn Sie aus irgendeinem Grund habe OpenCV installiert von der Quelle, geben Sie das build-Verzeichnis und tun:
Dann endlich