Seite 1 von 1

MySQL embedded, qt 4.3.3, winXP, nmake

Verfasst: 6. Februar 2008 15:20
von markus79
Hallo,

ich versuche schon länger MySQL in mein Program zu embedden.
Ich arbeite unter Windows XP mit Qt 4.3.3 und nmake. Die Doku zu libmysqld und deren Beispiele hab ich auch hingekriegt.

Folgende Zeile hab ich in qsql_mysql.cpp auskommentiert:

Code: Alles auswählen

// define Q_NO_MYSQL_EMBEDDED
Dort steht auch dass man das ganze Plugin statisch linken muss damit der Server nicht abstürzt, beim dynamischen linken stürzt er wirklich ab :-). Beim dynamischen linken gibt es keine linker probleme, aber beim statischen linken stehe ich an.
Ich linke gegen mysql-5.1.22/Embedded/static/debug/mysqlserver.lib und bekomm einige fehlermeldungen, warnungen sowie nicht aufgelöste externe symbole (nur ein Ausschnitt):

Code: Alles auswählen

LIBCMTD.lib(dosmap.obj) : error LNK2005: __errno bereits in MSVCRTD.lib(MSVCR71D.dll) definiert
LIBCMTD.lib(dosmap.obj) : error LNK2005: ___doserrno bereits in MSVCRTD.lib(MSVCR71D.dll) definiert
LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit bereits in MSVCRTD.lib(MSVCR71D.dll) definiert
LIBCMTD.lib(osfinfo.obj) : error LNK2005: __get_osfhandle bereits in MSVCRTD.lib(MSVCR71D.dll) definiert
LIBCMTD.lib(osfinfo.obj) : error LNK2005: __open_osfhandle bereits in MSVCRTD.lib(MSVCR71D.dll) definiert
LIBCMTD.lib(lseeki64.obj) : error LNK2005: __lseeki64 bereits in MSVCRTD.lib(MSVCR71D.dll) definiert
LIBCMTD.lib(setlocal.obj) : error LNK2005: _setlocale bereits in MSVCRTD.lib(MSVCR71D.dll) definiert

Code: Alles auswählen

LINK : warning LNK4098: Standardbibliothek 'MSVCRTD' steht in Konflikt mit anderen Bibliotheken;
LINK : warning LNK4098: Standardbibliothek 'LIBCMTD' steht in Konflikt mit anderen Bibliotheken;

Code: Alles auswählen

mysqlserver.lib(libmysql.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '__imp__ntohs@4', verwiesen in Funktion '_mysql_server_init@12'
mysqlserver.lib(viosocket.obj) : error LNK2001: Nichtaufgelöstes externes Symbol __imp__ntohs@4
mysqlserver.lib(libmysql.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '__imp__getservbyname@8', verwiesen in Funktion '_mysql_server_init@12'
mysqlserver.lib(libmysql.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '__imp__MessageBoxA@16', verwiesen in Funktion '_mysql_debug@4'
...
Mit der Angabe /NODEFAULTLIB kommen diese zwar nicht mehr, jedoch eine unmenge anderer Probleme, hier der Anfang:

Code: Alles auswählen

mysqlserver.lib(item_row.obj) : error LNK2001: Nichtaufgelöstes externes Symbol "const type_info::`vftable'" (??_7type_info@@6B@)
mysqlserver.lib(md2.obj) : error LNK2001: Nichtaufgelöstes externes Symbol "const type_info::`vftable'" (??_7type_info@@6B@)
mysqlserver.lib(sql_analyse.obj) : error LNK2001: Nichtaufgelöstes externes Symbol "const type_info::`vftable'" (??_7type_info@@6B@)
mysqlserver.lib(item_sum.obj) : error LNK2001: Nichtaufgelöstes externes Symbol "const type_info::`vftable'" (??_7type_info@@6B@)
...
Wer kann mir Helfen, bzw. irgendwelche Hinweisee geben?

Mit freundlichen Grüßen und Danke im Voraus!
Markus

Verfasst: 6. Februar 2008 16:07
von Christian81

Code: Alles auswählen

LINK : warning LNK4098: Standardbibliothek 'MSVCRTD' steht in Konflikt mit anderen Bibliotheken;
LINK : warning LNK4098: Standardbibliothek 'LIBCMTD' steht in Konflikt mit anderen Bibliotheken;
Ist das Resultat unterschiedlicher /MT(d) /MD(d) switches beim Kompilieren der verschiedenen Libraries. Der Switch muss überall gleich sein.

Wo die Funktionen her sind hätte dir msdn.microsoft.com verraten... ws2_32.lib

Und ein vtable-error weisst auf fehlende moc-Files hin (Forum-Suche!)