Seite 1 von 1

Und noch einer mit Problemen bei der VC2008 Integration

Verfasst: 3. August 2008 13:28
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.

Verfasst: 4. August 2008 10:01
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.

Verfasst: 4. August 2008 14:08
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 ;)

Verfasst: 6. August 2008 12:59
von elli
hello,

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

elli

Verfasst: 6. August 2008 13:23
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