Seite 1 von 1
einbindung von externen Libs
Verfasst: 25. Dezember 2010 13:46
von ramin
Guten Tag und frohe Weihnachten!
ich möchte die opencv-libs in mein Programm einbinden. ich verwende den QT-Creator.
Hierzu habe ich zunächst
eingebunden. Trotzdem habe ich nun noch viele "undefined references" . Ich muss wohl noch in der programm.pro-Datei die LIBS setzen. Was setze ich hier? Muss das zu den binärdateien zeigen?
Vielen Dank!
[/code]
Verfasst: 25. Dezember 2010 15:47
von kater
Weil Weihnachen ist mach ich mir mal die Mühe. Das hab ich damals aber selbst in 10min herausgefunden. Für OpenCv Version 1.
In der .pro Datei
INCLUDEPATH += /usr/include/opencv
CONFIG += link_pkgconfig
PKGCONFIG += opencv
In den Sourcen
#include <cv.h>
#include <highgui.h>
Path evtl. anpassen. Je nachdem wo die Dateien eben liegen. Für OpenCV Version 2 kann das eigentlich nur so ähnlich sein.
Verfasst: 25. Dezember 2010 15:58
von franzf
Die Header geben ja nur die Typen/Methoden bekannt. Die Implementierung (Definition) findet meist in .cpp-Dateien statt, die dann zu einem executable bzw. einer Library gelinkt werden.
Um nun die Definition zu bekommen, musst du die Bibliotheken zu deinem Projekt linken. Das sind die Binaries.
Diese fügst du im .pro deiner "LIBS"-Variable hinzu. Im Creator dann über den entsprechenden Eintrag in der Konfiguration.
Siehe: Qt Doku -> "qmake Variable Reference" -> "LIBS"
// edit:
Tja, das kommt davon, wenn man mitten im Post abhaut um mit den Katzen zu spielen - Antwort kommt zu spät ^^
@kater: funktioniert pkg-config auch unter Windows?
Verfasst: 25. Dezember 2010 17:08
von kater
Wenn du ein Windows pkg-config installierst, dann schon. Gibt es aber glaube ich nicht.
Für Windows muss man in der .pro Datei dann eben die LIBS manuell angeben.
LIBS += -lcv -lhighgui
Und eben auch den Librarypath.
:: error: cannot find -lcvaux
Verfasst: 25. Dezember 2010 21:04
von ramin
hallo!
frohe Weihachten und danke für die Antwort. Jetzt gibt es da ein Problem:
:: error: cannot find -lcvaux
Google kennt dieses Problem nicht. Der Pfad zu /usr/include/opencv ist korrekt.
Vielen Dank!
Nachtrag: cvaux scheint für veraltete und experimentelle Dinge zu sein - und ist nicht in meiner /usr/include/opencv. wie kann ich das rausschmeißen?
NachNachtrag: cvaux nachinstalliert - nicht mein tag... danke
Re: :: error: cannot find -lcvaux
Verfasst: 25. Dezember 2010 21:37
von franzf
ramin hat geschrieben::: error: cannot find -lcvaux
Google kennt dieses Problem nicht. Der Pfad zu /usr/include/opencv ist korrekt.
Der Pfad ist für eine lib NICHT korrekt. In /usr/include liegen nur die Header. /usr/lib wäre ein Pfad, der für ein Lib-Verzeichnis passen könnte. Aber da musst du von Distri zu Distri schauen. Wenn es aber jetzt eh klappt, ist es ja gut

Verfasst: 26. Dezember 2010 05:41
von kater
Genau deswegen Nutz ich pgkconfig. Der weiss was richtig ist.
Aber probier rum, bringt Erfahrung.