Seite 1 von 1

Anfängerfrage: Zusätzliche Includeverzeichnisse

Verfasst: 5. November 2010 09:42
von pizza4ever
Guten Tag,

ich arbeiten mti openCV, bin aber mit der MFC maximal unzufrieden und will daher auf QT wechseln. Leider gibt es kaum Tutorials für QT mit Visual Studio, so dass ich im QT Designer ein paar Tuts gemacht haben, die aber nicht 1:1 auf Visual Studio dann so laufen...

DAher will cih nun komplett auf den QT Creator wechseln. openCV habe ich bereits für MinGW kompilieren können, aber ich weiß nun leider nicht wo ich meine Includeverzeichnisse angebe? Unter Visual Studio musste ich in den Projekteinstellungen immer unter "Linker / Eingabe: Zusätzliche Abhängigkeiten" und unter "C/C++, Allgemein: Zusätzliche Includeverzeichnisse" angeben...

Wie kann cih die entsprechenden Einstellungen im QT Creator / minGW einstellen??

Dank euch

Verfasst: 5. November 2010 09:57
von Neuling_
Hallo,

schau mal in deine Projekt.PRO-Datei (ganz oben in der Projektmappe)
ich denke die Datei musst du ergänzen.

zB.:
LIB += abc.dll

und deine Header halt.

Grüße

Verfasst: 5. November 2010 10:18
von pizza4ever
Ufftata...

also muss dann da stehen:

LIB += cv210.lib cxcore210.lib highgui210.lib

Meine Headerdateien liegen alle in c:\opencv\include ... Die würde ihc dann ganz gerne in der WindowsMain mit #include "openCV.h" und "highgui.h" einbinden...

Würdest Du sagen dass es so richtig ist?

Verfasst: 5. November 2010 10:35
von padreigh
starte mal den Creator , klick da links auf Help und gib "qmake" ein, gleich der erste Punkt sollte dir weiterhelfen können. Mal eine exemplarisches .pro von mir, dann siehst du was (ich, Linux) meist benutze:


Code: Alles auswählen

# Verzeichnisse die zusätzlich nach includes durchsucht werden sollen (zB für zus. Libs)
INCLUDEPATH += /pfad/1   /pfad/2

# Bibliotheken die eingebunden werden sollen 
LIBS += -L/pfad/3                      # -L/pfad/3 ist ein zusätliches Verzeichnis das nach libs durchsucht wird falls sie nicht im Pfad stehen sollten
LIBS += -lname                         # -l ist der Name der lib: das expandiert zu libname.so (in linux, in win warscheinlich name.dll)

# name der ausführbaren datei/ der lib
TARGET = mss_logger

# ich will ne datei
TEMPLATE = app           # oder lib oder subdir

# debug mode, nutze QT variable für qt abhängigkeiten
CONFIG += debug qt warn_on

# benutze von QT: gui, core, xml und network module
QT += xml network      # gui und core sind per default drin

# meine dateien
HEADERS += den.h \
    und.h \
    denauch.h 

SOURCES += main.cpp \
    den.cpp \
   und.cpp \
   denauch.cpp 

FORMS +=

OTHER_FILES += 

# räum auf beim erstellen von dateien
DESTDIR = ./bin                     # dahin kommt die ausführbare datei
MOC_DIR = ./moc                  # hierher bitte die moc_ dateien
OBJECTS_DIR = ./obj             # hierher die objekte
RCC_DIR = ./resources          # dahin das ressource.cpp
UI_DIR = ./ui                         # hierhin die ui dateien

Verfasst: 5. November 2010 12:43
von pizza4ever
Läuft jett - musste irgendwie die DLLs noch ins Windows Verzeichnis kopieren, kA wieso...

Habs dann mit INCLUDEPATH und LIBS eingebunden...

Dank euch
;)

Verfasst: 5. November 2010 12:45
von padreigh
der INCLUDEPATH ist nur für HEADER zuständig, nicht für den Pfad zur Library ... der wird unter "LIBS += " mit -L angegeben ... dann brauchste auch nicht wild kopieren

Verfasst: 5. November 2010 13:34
von pizza4ever
Servus,

hab mir Dein File nochmal durchgelesen, mit -L hab ichs net hinbekommen, ist immer abgestüzt... Hab es sowohl mit:

-L "C:\OpenCV21\release\bin"
als auch mit
-L C:\OpenCV21\release\bin
und auch mit
-LC:\OpenCV21\release\bin versucht, ging alles net

hab nun mal den DLL Pfad in meine PATH geadded und voila es läuft, Dank Dir...

meine .pro Datei sieht nun so aus:

Code: Alles auswählen

#-------------------------------------------------
#
# Project created by QtCreator 2010-11-05T10:04:00
#
#-------------------------------------------------

QT       += core gui

TARGET = TestProject
TEMPLATE = app

INCLUDEPATH += C:\OpenCV21\include\opencv


LIBS += C:\OpenCV21\release\lib\libcv210.dll.a \
C:\OpenCV21\release\lib\libcvaux210.dll.a \
C:\OpenCV21\release\lib\libcxcore210.dll.a \
C:\OpenCV21\release\lib\libcxts210.dll.a \
C:\OpenCV21\release\lib\libhighgui210.dll.a \
C:\OpenCV21\release\lib\libml210.dll.a \

SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui


EDIT:

-LC:/OpenCV21/release/bin

So läufts!! Sind somit auch meine anderen libs einträge falsch gesetzt??

DANKE

Edit2: Lief doch so nicht.. Habs nun wieder in den PATH geschrieben, so gings;-)

Verfasst: 5. November 2010 14:08
von padreigh
Nimm mal deinen letzten Versuch und statt "bin" lieber "lib" ... dann sollte es tun oder halt den "Windowsstyle" einfach kompletter Pfad angeben und dabei trozdem "/" statt "\" also :

LIBS += C:/OpenCV21/release/lib/libcv210.dll.a \
C:/OpenCV21/release/lib/libcvaux210.dll.a \
C:/OpenCV21/release/lib/libcxcore210.dll.a \
C:/OpenCV21/release/lib/libcxts210.dll.a \
C:/OpenCV21/release/lib/libhighgui210.dll.a \
C:/OpenCV21/release/lib/libml210.dll.a

Verfasst: 5. November 2010 14:15
von pizza4ever
Das Programm startet dann trotzdem nicht .. ihc weiß net so recht wieso, sobald ich es in den Systempath adde gehts..

Ist aber ach net schlimm IMHO

Dank Dir;-)

Was mir wichtiger wäre: Mien Programm läuft nun für eine Datei, die ich mit dem QFileDialog aufmache, ich will das Programm aber für z.B. ALLE Jpeg Dateien eines Ordners machen...

Kannst Du mir mal nen Tipp geben wie ich das mache? In der MFC war das immer ziemliches gefrimel!;)

DANKE

Verfasst: 5. November 2010 15:41
von Christian81
Ein Programm unter Windows startet nunmal nur wenn alle Dlls im Pfad sind...

Verfasst: 5. November 2010 23:49
von pizza4ever
jaja, das ist ja kein Problem, ich wollts halt nur per Lib einbinden, was leider gottes fehlgeschlagen ist ;-(

Gruß

Verfasst: 6. November 2010 08:48
von Christian81
pizza4ever hat geschrieben:, ich wollts halt nur per Lib einbinden
Häh?
Meinst Du statisch Linken? Siehe Forensuche...

Verfasst: 6. November 2010 09:04
von franzf
Du musst zwischen Linken und Laufzeit unterscheiden. Eine Bibliothek muss zur Laufzeit bekannt sein, unter Windows geht das mit der PATH-Umgebungsvariablen. Dort das lib-dir von OpenCV eintragen, dann sollte das Programm starten (das ist übrigens kein Absturz==Laufzeitfehler, da das Programm nopch gar nicht laufen kann wenn eine lib nicht gefunden wird!).
Um das Programm überhaupt linken zu können, braucht der Linker die nötigen Infos zu Name und Pfad der lib, dies geschieht mit LIBS +=.