einbindung von externen Libs

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
ramin
Beiträge: 18
Registriert: 27. September 2009 13:25

einbindung von externen Libs

Beitrag 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

Code: Alles auswählen

#include <opencv/cv.h>
#include <opencv/highgui.h>
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]
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag 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.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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?
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag 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.
ramin
Beiträge: 18
Registriert: 27. September 2009 13:25

:: error: cannot find -lcvaux

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: :: error: cannot find -lcvaux

Beitrag 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 :)
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag von kater »

Genau deswegen Nutz ich pgkconfig. Der weiss was richtig ist.
Aber probier rum, bringt Erfahrung.
Antworten