Seite 1 von 1

QT 4.3.3 und Visual C++ 6.0 - DLL erstellen

Verfasst: 17. April 2008 21:03
von KartoffelKiffer
Hallo,

wie schon erwähnt arbeite ich mit der Version 6.0 der Visual C++-Umgebung.
Eingebettet habe ich dort das Add-In "Qt 4 Visual Studio Integration.".

Ich möchte für eine Applikation nun eine DLL erstellen, die unter Anderem auf QT-Funktionen zurück greift.

Leider kommt beim Kompilieren ständig die Meldung "fatal error C1083: Cannot open include file: 'QtGui': Permission denied", wenn ich in der DLL ein "#include <QtGui>" mache.

Die DLL erstelle ich wiefolgt:
- New
- Projects
- Win32 Dynamic-Link Library
- Name und Pfad angeben
- "A DLL that exports some symbols."
- Fertig

Beim Kompilieren gibt es auch astrein eine .dll-Datei im debug-Ordner, wenn ich den include der QtGui entferne.

Jetzt fehlt mir nur noch die Möglichkeit auch QT-Funktionalität einzubinden, dann wäre ich wunschlos glücklich.




Mfg KK

Verfasst: 17. April 2008 22:31
von Christian81
Erstens woher hast Du "Qt 4 Visual Studio Integration.".
Zweitens - wenn er QtGui nicht findet wird wohl der Pfad zur Datei nicht vorhanden sein - was hat das mit Qt zu tun?
Drittens - msvc6??

Verfasst: 17. April 2008 22:47
von KartoffelKiffer
Hallo Christian,

die Integration in Visual Studio ist lediglich ein weiterer Punkt oben in der Menüleiste von VC++, in der neue Qt-Projekte angelegt werden können, Widgets dazu etc.

Zu zwei: Ich starte die Entwicklungsumgebung über eine mit-installierte Batch-Datei, deren Inhalt wiefolgt aussieht:

Code: Alles auswählen

@echo off
rem
rem This file is generated
rem

echo Setting up a Qt environment...
echo -- QTDIR set to C:\programme\Qt\4.3.3
echo -- Added C:\programme\Qt\4.3.3\bin to PATH
echo -- QMAKESPEC set to win32-msvc

set QTDIR=C:\programme\Qt\4.3.3
set PATH=C:\programme\Qt\4.3.3\bin;%PATH%
set QMAKESPEC=win32-msvc

regedit /e S$D$K$ "HKEY_LOCAL_MACHINE\Software\Microsoft\MicrosoftSDK"
if not exist S$D$K$ goto ENDSDK\r
find "Install Dir" < S$D$K$ > D$I$R$
del S$D$K$
for /f "tokens=2 delims==" %%i in (D$I$R$) do call %%i\setenv
del D$I$R$
:ENDSDK\r

if not "%1"=="vsvars" goto END
call "C:\Programme\Microsoft Visual Studio\VC98\bin\vcvars32.bat"
:END

if not "%1"=="vsstart" goto ENDSTARTVS
call "C:\Programme\Microsoft Visual Studio\VC98\bin\vcvars32.bat"
msdev /useenv
:ENDSTARTVS
Ich hatte eigentlich gedacht, darüber werden die Variablen zu den Qt-Libraries und Includes gesetzt.

Wir besitzen eine Commercial Version von Qt, bei der es Versionen für VC++6, VS2003, VS2005 und VS2008 gibt. Darum kann ich nicht genau sagen woher das Add-In kommt, es war halt dabei.

Hast Du denn schonmal mit der Visual C++ 6.0 gearbeitet und eine DLL entwickelt, die auch Qt "kann" ?




Mfg KK

Verfasst: 17. April 2008 22:52
von Christian81
Ich glaube Dir fehlen grundlegende Dinge - nämlich ein bischen Verständnis von der IDE die Du benutzt und Ahnung von Qt -> also fang bitte erstmal mit den Grundlagen an. Vor allem was Qt überhaupt ist und wie man es benutzt. Vor allem qmake.

Die Qt-Integration ist kommerziell. Und da Du so wenig Ahnung von den ganzen ier hast würde ich sagen die hast du nicht legal....

Verfasst: 17. April 2008 23:10
von KartoffelKiffer
Super Support, danke.

Ich nutze die IDE zum Programmieren ettlicher Qt-Applikationen, bisher allerdings nie für eine DLL.

Da ich die IDE wie zuvor auch über die Batch-Datei starte, und das Inkludieren mislingt, ist der Fehler für mich nicht mehr ersichtlich.

Eine IDE ist in den wenigsten Fällen übersichtlich, vor Allem diese alte Version nicht. Darum finde ich die Stelle auch nicht, an der es die Verzeichnisse zu deklarieren gilt, die ich für ein Qt-Programm benötige.

Da ich Probleme speziell mit den Qt-Libraries habe, wende ich mich auch an ein Qt-Forum. Normale c/++-Funktionen laufen in der DLL-Erstellung.




Mfg KK

Verfasst: 18. April 2008 06:30
von Christian81
Wie ich schon sagte - irgendwas passt hier nicht. Und das mit der VS-Integration schon gar nicht...

Wo man das in MSVC6 einstellen kann weiß ich nicht - entweder man erstellt ein .dsp-Projekt per qmake oder sucht sich eben durch msvc6 durch bis man die Einstellungen für den Include-Path findet. Was das mit Qt zu tun haben soll weiß ich aber nicht...

Verfasst: 18. April 2008 07:41
von macman
KartoffelKiffer hat geschrieben:Darum finde ich die Stelle auch nicht, an der es die Verzeichnisse zu deklarieren gilt, die ich für ein Qt-Programm benötige.
Extras/Optionen/Verzeichnisse

Verfasst: 18. April 2008 11:31
von moviemax
@ Christian81:
was geht den mit dir ab?
Schenkelsperre zu hause oder was?

"KartoffelKiffer" hat ne einfache Frage gestellt, wenn auch
etwas im falschen Themenbreich. Wobei ich hier auch einiges an der Forumsstruktur auszusetzten hätte.

Das Problem habe ich auch "immer" unter WinOS und VC++.
Man kann nicht <QtGui>, <QtCore> includieren.
sondern immer nur <QtGui/QLabel> <QtCore/QVector>
also mit dem Klassennamen.

Warum das so ist weiß nicht nicht.

Zudem starte ich VC++ nicht über ein skript sondern setze die
Variablen unter "Systemeigenschaften"-> [ Erweitert | -> "Umgebungsvariabeln"

Desweiteren trägt das QtAddon auch die CustomBuildSteps automatisch
von QObject abgleitenten Klassen für das moc`ing ein etc.


gruß moviemax

@ Christian81 PS. 1. unser Qt ist lizensiert. und 2.
spar dir deine Ärger für die ganzen nicht gelöst markierten
gelösten threads auf.

Verfasst: 18. April 2008 11:52
von Christian81
Hier kam offensichtlich jemand an der weder viel Ahnung von msvc6 noch von Qt hat. Allerdings benutzt er die Qt-Integration... wie würdest Du das sehen wenn Du nicht weist wer das ist???

/edit: und das man <QtGui> nicht einbinden kann kann ich mit msvc2005 nicht bestätigen und ist mir auch noch nie untergekommen. Macht man außerdem auch nicht außer man hat zu viel Zeit :)

Verfasst: 19. April 2008 09:05
von KartoffelKiffer
Endlich, es funktioniert.

Zwei Punkte haben eine Rolle gespielt:
Zum einen hat VC++ die Pfade zu den includes und libraries bei jedem Start vergessen, sodass ich diese per Hand nachtragen muss.
Zum anderen war es der Punkt, den moviemax geschildert hat. Es geht nur mit dem include des Paketes mit Angabe des Klassennamens.

Auch wenn ich mich dessen eigentlich nicht rechtfertigen muss, so kann macman gerne bei mir vorbeischauen und die Lizenz auf dem Firmen-Notebook analysieren. Komme nämlich auch aus Gütersloh. Er kann Dir somit bestätigen, dass es sich um eine gültige Lizenz handelt, und Du kannst wieder ruhig schlafen.

Ich danke für die Hilfe.




Mfg KK