Und noch einer mit Problemen bei der VC2008 Integration

Verschiedenes zu Qt
Antworten
MJDarknet
Beiträge: 2
Registriert: 3. August 2008 11:28
Kontaktdaten:

Und noch einer mit Problemen bei der VC2008 Integration

Beitrag von MJDarknet »

Hallo,
also ich weis ja das es zum Thema QT und VC-Integration zig HowTos und Beiträge gibt. Aber eben genau darum schreibe ich jetzt selber ins Forum, da ich schon so vieles ausprobiert habe es aber dennoch nicht klappt.

Also, vielleicht erst einmal meine Konfiguration:

Windows Vista X64-SP1
VisualStudio Express 2008
Qt 4.4.0-source
WindowsSDK (Hab mal in einem Howto gelesen das man das installieren muss, es funktioniert aber weder mit noch ohne)

So, also ich hab einen Ordner (C:\QT-4.4.0) angelegt und die QT-Quelldateien da hin entpackt.
Dann habe ich die Umgebungsvariablen von Windows gesetzt
QMAKESPEC = win32-msvc2008
QTDIR = C:\QT-4.4.0
und die Path Variable um C:\QT-4.4.0\bin erweitert.

Dann habe ich im QTDIR "configure -debug-and-release -platform win32-mscv2008 && nmake" in der VC-Konsole ausgeführt.

Als das ganze dann fertig war habe ich in VC unter Extras -> Optionen -> Projekte und Projektmappen -> VC++-Verzeichnisse Die Include und Bibliotheksverzeichnisse um $(QTDIR)\include und $(QTDIR)\lib erweitert.

Danach bin ich davon ausgegangen das es jetzt Funktionieren sollte, zumindest hat das in den Howtos die ich durchgearbeitet habe so gestanden.

Folgenden Code:

Code: Alles auswählen

#include "Qt/QApplication.h"
#include "Qt/QPushButton.h"

int main ( int argc, char *argv[] )
{
	QApplication app ( argc, argv );
	QPushButton hallo ( "Hallo Welt!" );

	hallo.show();

	return app.exec();
}
habe ich zum Testen hergenommen.
Dabei bekomme ich beim Kompilieren aber folgende Fehlermeldung:

Code: Alles auswählen

1>------ Erstellen gestartet: Projekt: Qt4-Sandbox, Konfiguration: Debug Win32 ------
1>Verknüpfen...
1>Qt4-Sandbox.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: virtual __thiscall QApplication::~QApplication(void)" (__imp_??1QApplication@@UAE@XZ)" in Funktion "_main".
1>Qt4-Sandbox.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: virtual __thiscall QPushButton::~QPushButton(void)" (__imp_??1QPushButton@@UAE@XZ)" in Funktion "_main".
1>Qt4-Sandbox.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static int __cdecl QApplication::exec(void)" (__imp_?exec@QApplication@@SAHXZ)" in Funktion "_main".
1>Qt4-Sandbox.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: void __thiscall QWidget::show(void)" (__imp_?show@QWidget@@QAEXXZ)" in Funktion "_main".
1>Qt4-Sandbox.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ)" in Funktion "_main".
1>Qt4-Sandbox.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall QPushButton::QPushButton(class QString const &,class QWidget *)" (__imp_??0QPushButton@@QAE@ABVQString@@PAVQWidget@@@Z)" in Funktion "_main".
1>Qt4-Sandbox.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall QString::QString(char const *)" (__imp_??0QString@@QAE@PBD@Z)" in Funktion "_main".
1>Qt4-Sandbox.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall QApplication::QApplication(int &,char * *,int)" (__imp_??0QApplication@@QAE@AAHPAPADH@Z)" in Funktion "_main".
1>D:\Documents\Visual Studio 2008\Projects\Qt4-Sandbox\Debug\Qt4-Sandbox.exe : fatal error LNK1120: 8 nicht aufgelöste externe Verweise.
1>Das Buildprotokoll wurde unter "file://d:\Documents\Visual Studio 2008\Projects\Qt4-Sandbox\Qt4-Sandbox\Debug\BuildLog.htm" gespeichert.
1>Qt4-Sandbox - 9 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
So weit ich das verstehe, geht es um die Bibliotheken, verbessert mich wenn ich falsch liege aber was mache ich falsch?

in der Konsole funktioniert es mit
qmake -project
qmake
nmake

Sorry, ich hab noch nicht so lange mit der QT zu tun und Profiprogrammierer bin ich auch nicht. Darum wär es schön wenn ihr mir helfen könnt.

Vielen Dank.
MJDarknet
Beiträge: 2
Registriert: 3. August 2008 11:28
Kontaktdaten:

Beitrag von MJDarknet »

Hallo noch mal.

Also, ich hab gerade gemerkt das ich die Beispiele der Qt mit VC compilieren kann. Von daher gehe ich mal davon aus das es mit den Einstellungen meines Projektes zu tun hat. Muss ich im Projekt irgendetwas einstellen und vor allem welchen Projekttyp muss ich erstellen? Ich habe einfach ein leeres win32-Projeckt erstellt.
VuuRWerK
Beiträge: 82
Registriert: 11. Juni 2007 20:46
Wohnort: Dresden

Beitrag von VuuRWerK »

Du musst die qtmain(d).lib, qtcore(d).lib, qtgui(d).lib noch linken. Das (d) bedeutet das diese libs für den Debug-Modus da sind, ohne dem für den Release.

Gut Schuß
VuuRWerK ;)
Es gibt nur 3 natürliche Feinde des Programmierers: Tageslicht, frische Luft und das unerträgliche Gebrüll der Vögel.
Oft ist die Ursache des schwarzsehens lediglich ein verrutschen des Bretts vorm Kopf =)
elli
Beiträge: 12
Registriert: 7. Mai 2008 21:53

Beitrag von elli »

hello,

im Ordner examples findest Du jede Menge VS Sample Projekte. Einfach anschauen oder so ein Ding als Basis nehmen.

elli
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Beitrag von Troll.Soft »

Hallo MJDarknet,
Gratulation, wenn VC alles von QT übersetzt bist Du schon gut dran, war bei mir aufwändiger. Außerdem liegt Dein Problem mit Sicherheit nicht mehr bei QT sondern beim VC.
Ich arbeite schon seit langem so, das für ein Projekt ein .pro Datei erstellt wird und qmake den Rest erledigt.
Versuchs mal so, wenn der VC dann immer noch quält wieder melden.
tschüß
Reinhold
Antworten