[gelöst] MySql - LibraryPath
[gelöst] MySql - LibraryPath
Hallo,
wenn ich eine Anwendung als static Kompilliere und versuche mit dieser von einem anderen PC auf eine MySql Datenbank anzusprechen, erhalte ich die Fehlermeldung „driver not load“
Der Treiber befindet sich doch schon fertig unter: QTDIR\plugins\sqldriversqsqlmysql.dll
QDir* dir=new QDir();
dir->convertToAbs();
app.addLibraryPath(dir->currentDirPath() );
und so gebe ich den Treiberpfad an. Auch wenn ich den Treiber neu erstelle, ändert sich nichts:
cd %QTDIR%\src\plugins\sqldrivers\mysql
qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=C:\MYSQL\LIB\OPT\LIBMYSQL.LIB" mysql.pro
nmake
auf dem Entwicklungsrechner funktioniert alles ohne Probleme. Welche *.dll’s und Dateien benötige ich und wie muss ich den Plugin Pfad angeben?
Gruß
Marco
P.S.
Der Treiber befindet sich natürlich im Programmverzeichnis, in dem auch meine *.exe ist.
wenn ich eine Anwendung als static Kompilliere und versuche mit dieser von einem anderen PC auf eine MySql Datenbank anzusprechen, erhalte ich die Fehlermeldung „driver not load“
Der Treiber befindet sich doch schon fertig unter: QTDIR\plugins\sqldriversqsqlmysql.dll
QDir* dir=new QDir();
dir->convertToAbs();
app.addLibraryPath(dir->currentDirPath() );
und so gebe ich den Treiberpfad an. Auch wenn ich den Treiber neu erstelle, ändert sich nichts:
cd %QTDIR%\src\plugins\sqldrivers\mysql
qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=C:\MYSQL\LIB\OPT\LIBMYSQL.LIB" mysql.pro
nmake
auf dem Entwicklungsrechner funktioniert alles ohne Probleme. Welche *.dll’s und Dateien benötige ich und wie muss ich den Plugin Pfad angeben?
Gruß
Marco
P.S.
Der Treiber befindet sich natürlich im Programmverzeichnis, in dem auch meine *.exe ist.
Zuletzt geändert von Marco812 am 15. März 2006 21:43, insgesamt 1-mal geändert.
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Hallo,
ich habe jetzt das QT so konfigurieren wollen: configure -qt-sql-mysql -I C:\mysql\include -L C:\mysql\lib\opt -qt-sql-sqlite -static -release –fast
Nun erhalte ich folgende Fehler:
QtSql.lib(qsql_mysql.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '_m
ysql_fetch_row@4', verwiesen in Funktion '"protected: virtual bool __thiscall QM
YSQLResult::fetchNext(void)" (?fetchNext@QMYSQLResult@@MAE_NXZ)'
QtSql.lib(qsql_mysql.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '_m
ysql_stmt_fetch@4', verwiesen in Funktion '"protected: virtual bool __thiscall Q
MYSQLResult::fetchNext(void)" (?fetchNext@QMYSQLResult@@MAE_NXZ)'
//…gekürzt!!!
ysql_list_tables@8', verwiesen in Funktion '"public: virtual class QStringList _
_thiscall QMYSQLDriver::tables(enum QSql::TableType)const " (?tables@QMYSQLDrive
r@@UBE?AVQStringList@@W4TableType@QSql@@@Z)'
release\books.exe : fatal error LNK1120: 45 unaufgelöste externe Verweise
NMAKE : fatal error U1077: 'link': R³ckgabe-Code '0x460'
Stop.
NMAKE : fatal error U1077: '"C:\Programme\Microsoft Visual Studio .NET 2003\VC7\
BIN\nmake.exe"': R³ckgabe-Code '0x2'
Stop.
Warum erhalte ich diese Fehler und was kann ich dagegen machen?
Vorab noch eine weitere frage sollte QT dann so konfiguriert sein, kann ich einfach MySQL und SQLite nutzen, oder muss ich in meiner *.pro noch mysqlclient.lib hinzufügen? Für SQLite muss ich doch nur den aktuellen Source in das Verzeichnis QTDIR\src\3rdparty\sqlite stellen und QT konfigurieren oder?
Gruß
Marco812
ich habe jetzt das QT so konfigurieren wollen: configure -qt-sql-mysql -I C:\mysql\include -L C:\mysql\lib\opt -qt-sql-sqlite -static -release –fast
Nun erhalte ich folgende Fehler:
QtSql.lib(qsql_mysql.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '_m
ysql_fetch_row@4', verwiesen in Funktion '"protected: virtual bool __thiscall QM
YSQLResult::fetchNext(void)" (?fetchNext@QMYSQLResult@@MAE_NXZ)'
QtSql.lib(qsql_mysql.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '_m
ysql_stmt_fetch@4', verwiesen in Funktion '"protected: virtual bool __thiscall Q
MYSQLResult::fetchNext(void)" (?fetchNext@QMYSQLResult@@MAE_NXZ)'
//…gekürzt!!!
ysql_list_tables@8', verwiesen in Funktion '"public: virtual class QStringList _
_thiscall QMYSQLDriver::tables(enum QSql::TableType)const " (?tables@QMYSQLDrive
r@@UBE?AVQStringList@@W4TableType@QSql@@@Z)'
release\books.exe : fatal error LNK1120: 45 unaufgelöste externe Verweise
NMAKE : fatal error U1077: 'link': R³ckgabe-Code '0x460'
Stop.
NMAKE : fatal error U1077: '"C:\Programme\Microsoft Visual Studio .NET 2003\VC7\
BIN\nmake.exe"': R³ckgabe-Code '0x2'
Stop.
Warum erhalte ich diese Fehler und was kann ich dagegen machen?
Vorab noch eine weitere frage sollte QT dann so konfiguriert sein, kann ich einfach MySQL und SQLite nutzen, oder muss ich in meiner *.pro noch mysqlclient.lib hinzufügen? Für SQLite muss ich doch nur den aktuellen Source in das Verzeichnis QTDIR\src\3rdparty\sqlite stellen und QT konfigurieren oder?
Gruß
Marco812
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Hallo,
nun erhalte ich eine neue Fehlermeldung, wie kann ich dieses Problem beheben?
-I"C:/QT/mkspecs/win32-msvc.net" -Fotmp\obj\release_static\ @C:\DOKUME~1\xdfON~
1\LOKALE~1\Temp\nm12A.tmp
moc_bookwindow.cpp
link /LIBPATH:"C:\QT\lib" /LIBPATH:"C:\QT\lib" /NOLOGO /NODEFAULTLIB:"li
bc" /SUBSYSTEM:WINDOWS /OUT:"release\books.exe" @C:\DOKUME~1\xdfON~1\LOKALE~1\T
emp\nm12B.tmp
libcmt.lib(dosmap.obj) : error LNK2005: __errno bereits in MSVCRT.lib(MSVCR71.dl
l) definiert
libcmt.lib(dosmap.obj) : error LNK2005: ___doserrno bereits in MSVCRT.lib(MSVCR7
1.dll) definiert
libcmt.lib(tolower.obj) : error LNK2005: _tolower bereits in MSVCRT.lib(MSVCR71.
//…gekürzt!!!
LINK : warning LNK4098: Standardbibliothek 'MSVCRT' steht in Konflikt mit andere
n Bibliotheken; /NODEFAULT:Bibliothek verwenden
MSVCRT.lib(cinitexe.obj) : warning LNK4098: Standardbibliothek 'libcmt.lib' steh
t in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
release\books.exe : fatal error LNK1169: Ein oder mehrere mehrfach definierte Sy
mbole gefunden
NMAKE : fatal error U1077: 'link': R³ckgabe-Code '0x491'
Stop.
Gruß
Marco812
nun erhalte ich eine neue Fehlermeldung, wie kann ich dieses Problem beheben?
-I"C:/QT/mkspecs/win32-msvc.net" -Fotmp\obj\release_static\ @C:\DOKUME~1\xdfON~
1\LOKALE~1\Temp\nm12A.tmp
moc_bookwindow.cpp
link /LIBPATH:"C:\QT\lib" /LIBPATH:"C:\QT\lib" /NOLOGO /NODEFAULTLIB:"li
bc" /SUBSYSTEM:WINDOWS /OUT:"release\books.exe" @C:\DOKUME~1\xdfON~1\LOKALE~1\T
emp\nm12B.tmp
libcmt.lib(dosmap.obj) : error LNK2005: __errno bereits in MSVCRT.lib(MSVCR71.dl
l) definiert
libcmt.lib(dosmap.obj) : error LNK2005: ___doserrno bereits in MSVCRT.lib(MSVCR7
1.dll) definiert
libcmt.lib(tolower.obj) : error LNK2005: _tolower bereits in MSVCRT.lib(MSVCR71.
//…gekürzt!!!
LINK : warning LNK4098: Standardbibliothek 'MSVCRT' steht in Konflikt mit andere
n Bibliotheken; /NODEFAULT:Bibliothek verwenden
MSVCRT.lib(cinitexe.obj) : warning LNK4098: Standardbibliothek 'libcmt.lib' steh
t in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
release\books.exe : fatal error LNK1169: Ein oder mehrere mehrfach definierte Sy
mbole gefunden
NMAKE : fatal error U1077: 'link': R³ckgabe-Code '0x491'
Stop.
Gruß
Marco812
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Hallo,
also ich habe die libcmt.lib einmal in C:\Programme\Microsoft Visual Studio 6\VC98\Lib und einmal in C:\Programme\Microsoft Visual Studio .NET 2003\Vc7\lib
verstehe aber nicht warum das einen Fehler verursacht. Im QT Verzeichnis ist die libcmt.lib nicht zu finden!
Wie würdest du jetzt weiter vorgehen?
Gruß
Marco812
also ich habe die libcmt.lib einmal in C:\Programme\Microsoft Visual Studio 6\VC98\Lib und einmal in C:\Programme\Microsoft Visual Studio .NET 2003\Vc7\lib
verstehe aber nicht warum das einen Fehler verursacht. Im QT Verzeichnis ist die libcmt.lib nicht zu finden!
Wie würdest du jetzt weiter vorgehen?
Gruß
Marco812
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Probleme bringen doch wohl ehr DLLs. Da man nie weiß was da ist, muß man immer alles mitliefern, und das ist im Endeffekt deutlich mehr als ein statisch gelinktes Programm. Allein die QtGui4.dll ist fast 4 MB schwer, QtCore braucht man immer, noch ein MB. Das selbe Programm statisch gelinkt ist gerade mal 900K groß.Christian81 hat geschrieben:Ich frage mich nur woher dieser blöde static-Hype kommt - bringt keinen Vorteil und macht nur Probleme
Aber die Dateigröße ist nicht das Problem. Selbst wenn ich weiß das Qt auf einem Rechner installiert ist, muß ich trotzdem meine DLLs mit liefern, da ich nie sicher gehen kann, das Qt so compiliert wurde wie ich es brauche.
Also, wo ist der Vorteil des dynamischen Linkens, wenn ich dann doch wieder alles mitliefern muß? Nur weil ich Programmteile austauschen kann, ohne das Programm neu compilieren zu müssen?
Qt4 muss dynamisch gelinkt werden, sonst verbaut man sich einiges. Damit habe ich mich abgefunden, der Sinn erschließt sich mir jedoch nicht.
Hallo,
also ich habe mir jetzt noch mal mysql-noinstall-5.0.19-win32.zip herunter geladen und so konfiguriert, configure -qt-sql-mysql -I C:\mysql\include -L C:\mysql\lib\opt -l mysqlclient -qt-sql-sqlite -static -release der gleiche fehler wieder, ich habe nur zwei mal die lib einmal in MYSQLDIR\lib\opt und einmal in MYSQLDIR\lib\debug aber die wird es wohl nicht sein oder?
Gruß
Marco812
also ich habe mir jetzt noch mal mysql-noinstall-5.0.19-win32.zip herunter geladen und so konfiguriert, configure -qt-sql-mysql -I C:\mysql\include -L C:\mysql\lib\opt -l mysqlclient -qt-sql-sqlite -static -release der gleiche fehler wieder, ich habe nur zwei mal die lib einmal in MYSQLDIR\lib\opt und einmal in MYSQLDIR\lib\debug aber die wird es wohl nicht sein oder?
Gruß
Marco812