dynamische QT bibliotheken
dynamische QT bibliotheken
Hi,
versuche ein einfaches "Hallo world" zu compelieren, das geht ja noch aber beim linken bekomme ich Fehler in folgender Art:
error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QApplication::~QApplication(void)" (__imp_??1QApplication@@UAE@XZ) referenced in function _main
Ich denke das die dll's nicht bekannt sind aber wie mache ich diese VC++ (2005 express) bekannt ?
gruß
versuche ein einfaches "Hallo world" zu compelieren, das geht ja noch aber beim linken bekomme ich Fehler in folgender Art:
error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QApplication::~QApplication(void)" (__imp_??1QApplication@@UAE@XZ) referenced in function _main
Ich denke das die dll's nicht bekannt sind aber wie mache ich diese VC++ (2005 express) bekannt ?
gruß
-
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Also eine pro Datei benutze ich nicht (jedenfalls nicht wissentlich;)). Der Code ist eigentlich banal, na eben das typische Hello World:
#include "stdafx.h"
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton hello("Hello world!");
hello.resize(100, 30);
hello.show();
return app.exec();
}
Ich wollte das Programm mit den Mitteln der VC++ Anwendung compelieren und linken.
gruß
edit: hab die error report von VC++ mit eingestellt:
Build Log Build started: Project: Test2, Configuration: Debug|Win32
Command Lines Creating temporary file "d:\ProgrammingProjects\Test2\Test2\Debug\RSP00000F35922032.rsp" with contents
[
/OUT:"D:\ProgrammingProjects\Test2\Debug\Test2.exe" /INCREMENTAL /LIBPATH:"d:\Programme\Qt\4.2.0\bin" /LIBPATH:"d:\Programme\Qt\4.2.0\lib" /MANIFEST /MANIFESTFILE:"Debug\Test2.exe.intermediate.manifest" /DEBUG /PDB:"d:\ProgrammingProjects\Test2\debug\Test2.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86 kernel32.lib
".\Debug\stdafx.obj"
".\Debug\Test2.obj"
".\Debug\Test2.exe.embed.manifest.res"
]
Creating command line "link.exe @d:\ProgrammingProjects\Test2\Test2\Debug\RSP00000F35922032.rsp /NOLOGO /ERRORREPORT:PROMPT"
Output Window Linking...
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QApplication::~QApplication(void)" (__imp_??1QApplication@@UAE@XZ) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QPushButton::~QPushButton(void)" (__imp_??1QPushButton@@UAE@XZ) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static int __cdecl QApplication::exec(void)" (__imp_?exec@QApplication@@SAHXZ) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall QWidget::show(void)" (__imp_?show@QWidget@@QAEXXZ) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall QWidget::resize(int,int)" (__imp_?resize@QWidget@@QAEXHH@Z) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QPushButton::QPushButton(class QString const &,class QWidget *)" (__imp_??0QPushButton@@QAE@ABVQString@@PAVQWidget@@@Z) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(char const *)" (__imp_??0QString@@QAE@PBD@Z) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QApplication::QApplication(int &,char * *,int)" (__imp_??0QApplication@@QAE@AAHPAPADH@Z) referenced in function _main
D:\ProgrammingProjects\Test2\Debug\Test2.exe : fatal error LNK1120: 9 unresolved externals
Results Build log was saved at "file://d:\ProgrammingProjects\Test2\Test2\Debug\BuildLog.htm"
Test2 - 10 error(s), 0 warning(s)
#include "stdafx.h"
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton hello("Hello world!");
hello.resize(100, 30);
hello.show();
return app.exec();
}
Ich wollte das Programm mit den Mitteln der VC++ Anwendung compelieren und linken.
gruß
edit: hab die error report von VC++ mit eingestellt:
Build Log Build started: Project: Test2, Configuration: Debug|Win32
Command Lines Creating temporary file "d:\ProgrammingProjects\Test2\Test2\Debug\RSP00000F35922032.rsp" with contents
[
/OUT:"D:\ProgrammingProjects\Test2\Debug\Test2.exe" /INCREMENTAL /LIBPATH:"d:\Programme\Qt\4.2.0\bin" /LIBPATH:"d:\Programme\Qt\4.2.0\lib" /MANIFEST /MANIFESTFILE:"Debug\Test2.exe.intermediate.manifest" /DEBUG /PDB:"d:\ProgrammingProjects\Test2\debug\Test2.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86 kernel32.lib
".\Debug\stdafx.obj"
".\Debug\Test2.obj"
".\Debug\Test2.exe.embed.manifest.res"
]
Creating command line "link.exe @d:\ProgrammingProjects\Test2\Test2\Debug\RSP00000F35922032.rsp /NOLOGO /ERRORREPORT:PROMPT"
Output Window Linking...
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QApplication::~QApplication(void)" (__imp_??1QApplication@@UAE@XZ) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QPushButton::~QPushButton(void)" (__imp_??1QPushButton@@UAE@XZ) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static int __cdecl QApplication::exec(void)" (__imp_?exec@QApplication@@SAHXZ) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall QWidget::show(void)" (__imp_?show@QWidget@@QAEXXZ) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall QWidget::resize(int,int)" (__imp_?resize@QWidget@@QAEXHH@Z) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QPushButton::QPushButton(class QString const &,class QWidget *)" (__imp_??0QPushButton@@QAE@ABVQString@@PAVQWidget@@@Z) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QString::QString(char const *)" (__imp_??0QString@@QAE@PBD@Z) referenced in function _main
Test2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QApplication::QApplication(int &,char * *,int)" (__imp_??0QApplication@@QAE@AAHPAPADH@Z) referenced in function _main
D:\ProgrammingProjects\Test2\Debug\Test2.exe : fatal error LNK1120: 9 unresolved externals
Results Build log was saved at "file://d:\ProgrammingProjects\Test2\Test2\Debug\BuildLog.htm"
Test2 - 10 error(s), 0 warning(s)
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Naja, ich weiß das ich nicht sonderlich vertraut mit der Einbindung der QT Libiries bin (wollt es mal versuchen weil unter Linux das debuggen nicht so komfortabel ist).
Soweit ich das sehe wird der Pfad zu den lib's übergeben (/OUT:"D:\ProgrammingProjects\Test2\Debug\Test2.exe" /INCREMENTAL /LIBPATH:"d:\Programme\Qt\4.2.0\bin" /LIBPATH:"d:\Programme\Qt\4.2.0\lib"). In dem Verzeichnis sind die erzeugten QT libs. Weißt du in welcher lib die fehlenden klassen/Infos sind ? Vielleicht ist ja bei der Erzeugung der libs was schief gelaufen.
gruß
Soweit ich das sehe wird der Pfad zu den lib's übergeben (/OUT:"D:\ProgrammingProjects\Test2\Debug\Test2.exe" /INCREMENTAL /LIBPATH:"d:\Programme\Qt\4.2.0\bin" /LIBPATH:"d:\Programme\Qt\4.2.0\lib"). In dem Verzeichnis sind die erzeugten QT libs. Weißt du in welcher lib die fehlenden klassen/Infos sind ? Vielleicht ist ja bei der Erzeugung der libs was schief gelaufen.
gruß
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Nimm bitte pro-Files - das ist wesentlich einfacher!
Wo welche Klassen sind, sieht man in der Doku
QString -> QtCore(d)4.dll
QApplication -> QtGui(d)4.dll
Für Debug braucht man also QtCored4.lib und QtGuid4.lib und für Release QtCore4.lib und QtGui4.lib. Aber qmake würde Dir das alles automatisch setzen.
Wo welche Klassen sind, sieht man in der Doku
QString -> QtCore(d)4.dll
QApplication -> QtGui(d)4.dll
Für Debug braucht man also QtCored4.lib und QtGuid4.lib und für Release QtCore4.lib und QtGui4.lib. Aber qmake würde Dir das alles automatisch setzen.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Kann ich denn mir pro files arbeiten und trotzdem den Debugger von Microsoft benutzen ? Wie würde denn so ein pro file aussehen für das einfache Hello World ?
Ich vermute mal das Problem ist, das ich die QT Libs ohen Debuginfos erzeugt habe und jetzt via Debugmodus (aus VC++) die exe erzeugen will und das paßt wohl nicht zusammen. Liege ich da richtig ?
Gruß
Ich vermute mal das Problem ist, das ich die QT Libs ohen Debuginfos erzeugt habe und jetzt via Debugmodus (aus VC++) die exe erzeugen will und das paßt wohl nicht zusammen. Liege ich da richtig ?
Gruß
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
ja, siehe qmake-Optionen (-tp)waldo hat geschrieben:Kann ich denn mir pro files arbeiten und trotzdem den Debugger von Microsoft benutzen ?
siehe Qt-TutorialWie würde denn so ein pro file aussehen für das einfache Hello World ?
[/quote]
Nein das ist erstmal kein Problem (wobei ich ziemlich sicher bin, dass Du debug und release erstellt hast...), warum fügst Du icht einfach die Libs hinzu und schaust was passiert?Ich vermute mal das Problem ist, das ich die QT Libs ohen Debuginfos erzeugt habe und jetzt via Debugmodus (aus VC++) die exe erzeugen will und das paßt wohl nicht zusammen. Liege ich da richtig ?
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
ich dachte das die OT libs schon includiert wären:
/OUT:"D:\ProgrammingProjects\Test2\Debug\Test2.exe" /INCREMENTAL /LIBPATH:"d:\Programme\Qt\4.2.0\bin" /LIBPATH:"d:\Programme\Qt\4.2.0\lib" /MANIFEST /MANIFESTFILE:"Debug\Test2.exe.intermediate.manifest" /DEBUG /PDB:"d:\ProgrammingProjects\Test2\debug\Test2.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86 kernel32.lib
Wo gibt man denn noch die Libs an bzw. ich hab die Libs bei der Linker Option mit angegeben.
/OUT:"D:\ProgrammingProjects\Test2\Debug\Test2.exe" /INCREMENTAL /LIBPATH:"d:\Programme\Qt\4.2.0\bin" /LIBPATH:"d:\Programme\Qt\4.2.0\lib" /MANIFEST /MANIFESTFILE:"Debug\Test2.exe.intermediate.manifest" /DEBUG /PDB:"d:\ProgrammingProjects\Test2\debug\Test2.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86 kernel32.lib
Wo gibt man denn noch die Libs an bzw. ich hab die Libs bei der Linker Option mit angegeben.
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
oha, man muß den Path und den Name der Library angeben
Ich danke dir für den Tip, ist mir jetzt schon ein bisserl peinlich .
Nachdem ich das richtige Panel gefunden hab und die Libs eintragen habe funktionierts auch
Jetzt kann ich mich daran versuchen meine Linux Sourcen anzupassen.
Also vielen Dank nochmal
gruß
Ich danke dir für den Tip, ist mir jetzt schon ein bisserl peinlich .
Nachdem ich das richtige Panel gefunden hab und die Libs eintragen habe funktionierts auch
Jetzt kann ich mich daran versuchen meine Linux Sourcen anzupassen.
Also vielen Dank nochmal
gruß
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: