Seite 1 von 1

Qt3 -> Qt4 ... Linkerprobleme unter VS2005

Verfasst: 1. April 2009 09:52
von s.baumgartner
Hallo zusammen! Ich bin gerade dabei eine Applikation bei uns in der Firma von Qt3 auf Qt4 zu portieren. Ich verwende dabei Visual Studio 2005, hab die richtigen, statischen Bibliotheken übersetzt und linke auch darauf. Allerdings kommen immer noch ein paar Linker-Fehler, die ich so nicht beseitigen kann:

Code: Alles auswählen

Error	832	error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class QString __cdecl Q3FileDialog::getSaveFileName(class QString const &,class QString const &,class QWidget *,char const *,class QString const &,class QString *,bool)" (__imp_?getSaveFileName@Q3FileDialog@@SA?AVQString@@ABV2@0PAVQWidget@@PBD0PAV2@_N@Z) referenced in function "protected: void __thiscall MainWindowImplementation::slotCreateAviClicked(void)" (?slotCreateAviClicked@MainWindowImplementation@@IAEXXZ)	MainWindowImplementation.obj
Error	833	error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class QString __cdecl Q3FileDialog::getOpenFileName(class QString const &,class QString const &,class QWidget *,char const *,class QString const &,class QString *,bool)" (__imp_?getOpenFileName@Q3FileDialog@@SA?AVQString@@ABV2@0PAVQWidget@@PBD0PAV2@_N@Z) referenced in function "protected: void __thiscall MainWindowImplementation::slotLoadAviClicked(void)" (?slotLoadAviClicked@MainWindowImplementation@@IAEXXZ)	MainWindowImplementation.obj
Error	834	error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class QStringList __cdecl Q3FileDialog::getOpenFileNames(class QString const &,class QString const &,class QWidget *,char const *,class QString const &,class QString *,bool)" (__imp_?getOpenFileNames@Q3FileDialog@@SA?AVQStringList@@ABVQString@@0PAVQWidget@@PBD0PAV3@_N@Z) referenced in function "protected: void __thiscall MainWindowImplementation::slotLoadSensorsClicked(void)" (?slotLoadSensorsClicked@MainWindowImplementation@@IAEXXZ)	MainWindowImplementation.obj
Error	835	error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class QString __cdecl QFileDialog::getExistingDirectory(class QWidget *,class QString const &,class QString const &,class QFlags<enum QFileDialog::Option>)" (__imp_?getExistingDirectory@QFileDialog@@SA?AVQString@@PAVQWidget@@ABV2@1V?$QFlags@W4Option@QFileDialog@@@@@Z) referenced in function "protected: void __thiscall MainWindowImplementation::slotSaveConfigurationClicked(void)" (?slotSaveConfigurationClicked@MainWindowImplementation@@IAEXXZ)	MainWindowImplementation.obj
Error	836	error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall QComboBox::insertItem(class QString const &,int)" (__imp_?insertItem@QComboBox@@QAEXABVQString@@H@Z) referenced in function "public: __thiscall MainWindowImplementation::MainWindowImplementation(class QWidget *,char const *,class QFlags<enum Qt::WindowType>)" (??0MainWindowImplementation@@QAE@PAVQWidget@@PBDV?$QFlags@W4WindowType@Qt@@@@@Z)	MainWindowImplementation.obj
Error	837	error LNK2019: unresolved external symbol "__declspec(dllimport) public: bool __thiscall QMenu::isItemChecked(int)const " (__imp_?isItemChecked@QMenu@@QBE_NH@Z) referenced in function "protected: void __thiscall MainWindowImplementation::removeCameraFromList(int)" (?removeCameraFromList@MainWindowImplementation@@IAEXH@Z)	MainWindowImplementation.obj
Error	838	error LNK2019: unresolved external symbol "__declspec(dllimport) public: unsigned int __thiscall QMenu::count(void)const " (__imp_?count@QMenu@@QBEIXZ) referenced in function "protected: void __thiscall MainWindowImplementation::removeCameraFromList(int)" (?removeCameraFromList@MainWindowImplementation@@IAEXH@Z)	MainWindowImplementation.obj
Error	839	error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class QString __cdecl QInputDialog::getText(class QString const &,class QString const &,enum QLineEdit::EchoMode,class QString const &,bool *,class QWidget *,char const *,class QFlags<enum Qt::WindowType>)" (__imp_?getText@QInputDialog@@SA?AVQString@@ABV2@0W4EchoMode@QLineEdit@@0PA_NPAVQWidget@@PBDV?$QFlags@W4WindowType@Qt@@@@@Z) referenced in function "protected: void __thiscall MainWindowImplementation::slotCameraManagerChecked(void)" (?slotCameraManagerChecked@MainWindowImplementation@@IAEXXZ)	MainWindowImplementation.obj
Error	840	error LNK2019: unresolved external symbol "__declspec(dllimport) public: class QVariant __thiscall Q3Signal::value(void)const " (__imp_?value@Q3Signal@@QBE?AVQVariant@@XZ) referenced in function "protected: void __thiscall MainWindowImplementation::slotCameraManagerChecked(void)" (?slotCameraManagerChecked@MainWindowImplementation@@IAEXXZ)	MainWindowImplementation.obj
Error	842	fatal error LNK1120: 10 unresolved externals	C:\workspace\VBLSSetQt4\Release\MultisensInterface.exe
Error	841	error LNK2019: unresolved external symbol "__declspec(dllimport) public: int __thiscall QToolBox::addItem(class QWidget *,class QString const &)" (__imp_?addItem@QToolBox@@QAEHPAVQWidget@@ABVQString@@@Z) referenced in function "public: void __thiscall Ui_QtConnectSensors::setupUi(class QDialog *)" (?setupUi@Ui_QtConnectSensors@@QAEXPAVQDialog@@@Z)	QtConnectSensors.obj
Problematisch deshalb, weil die Schnittstelle der Q3FileDialog-Klasse so da sein müsste. Wenn ich den "neuen" FileDialog verwende, gibt's die gleichen Probleme.

Auch etwas schräg ist der letzte Fehler. Die QtConnectSensors ist ein Qt3 UI-File, welches ich mit uic3 generiert hab. Wenn ich hier das ganze auf Qt4 portiere und das gewöhnliche uic verwende, gibt's den gleichen Fehler.

Wär schön, wenn ihr mir helfen könntet... bin im Moment ein wenig ratlos.

EDIT: Achja... Qt 4.5

Verfasst: 1. April 2009 12:29
von Christian81
Die ganzen Funktionen sind in der qt3support lib. Also diese hinzulinken.

Verfasst: 1. April 2009 16:57
von s.baumgartner
Ich weiß.. die ist ja auch gelinkt... sowie qtcore.lib, qtgui.lib, qtmain.lib und qtopengl.lib.... und qtnetwork.lib

Und wie gesagt, die Fehler treten nicht nur bei Qt3 Legacy Klassen auf, sondern auch wenn ich die Qt4 Neu-Variante verwende. Muss die Qt3Support.lib eventuell mit irgendeinem Flag neu-kompiliert werden?

Verfasst: 1. April 2009 17:38
von Christian81
Andere Compilerflags in Qt als im Projekt.
Aber warum nicht einfach mal dynmaisch Linken und schauen?