Anfängerfrage: Zusätzliche Includeverzeichnisse

Alles rund um die Programmierung mit Qt
Antworten
pizza4ever
Beiträge: 21
Registriert: 4. November 2010 23:17

Anfängerfrage: Zusätzliche Includeverzeichnisse

Beitrag 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
Neuling_
Beiträge: 83
Registriert: 8. August 2009 20:55

Beitrag 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
Qt 2009.05
Entw.-umgebung Qt-Creator
pizza4ever
Beiträge: 21
Registriert: 4. November 2010 23:17

Beitrag 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?
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag 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
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
pizza4ever
Beiträge: 21
Registriert: 4. November 2010 23:17

Beitrag 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
;)
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag 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
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
pizza4ever
Beiträge: 21
Registriert: 4. November 2010 23:17

Beitrag 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;-)
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag 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
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
pizza4ever
Beiträge: 21
Registriert: 4. November 2010 23:17

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ein Programm unter Windows startet nunmal nur wenn alle Dlls im Pfad sind...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
pizza4ever
Beiträge: 21
Registriert: 4. November 2010 23:17

Beitrag von pizza4ever »

jaja, das ist ja kein Problem, ich wollts halt nur per Lib einbinden, was leider gottes fehlgeschlagen ist ;-(

Gruß
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

pizza4ever hat geschrieben:, ich wollts halt nur per Lib einbinden
Häh?
Meinst Du statisch Linken? Siehe Forensuche...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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 +=.
Antworten