Probleme mit MySQL

Ich habe den Fehler gerade entdeckt. ich versuche es die ganze zeit mit der C Api und die kommt mit C++ nicht klar. ich habe eben auf der MySQL Seit eeinen C++ conector heruntergeladen, der die gleiche Funktion übernimmt.
 
Die C-Api funktioniert einwandfrei in C++, warum sollte es da auch Probleme geben? Die oben genannten Symbole sind à propos auch korrekt nach C-Regeln benannt und müssen daher in einer korrekten libmysql.lib gefunden werden sofern du sie korrekt dazulinkst (was ich bezweifle).
 
Ich habe den Fehler gerade entdeckt. ich versuche es die ganze zeit mit der C Api und die kommt mit C++ nicht klar.
Binde die Header so ein:
C++:
extern "C" {
#include <my_global.h>
#include <mysql.h>
}
\edit: Obwohl das bei mir auch keine Rolle spielt. Die Interoperabilität zwischen C++ und C ist immer gegeben, man kann immer C Funktionen in C++ nutzen.

Gruß
 
Zuletzt bearbeitet:
Bin leider erst jetzt dazu gekommen wieder zu posten.
Es tauchen immer neu Fehler auf.

Visual Studio Ausgabe:
Code:
1>------ Erstellen gestartet: Projekt: MySQL, Konfiguration: Debug Win32 ------
1>Verknüpfen...
1>LIBCMT.lib(setlocal.obj) : error LNK2005: __configthreadlocale ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(tidtable.obj) : error LNK2005: __encode_pointer ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(tidtable.obj) : error LNK2005: __decode_pointer ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(invarg.obj) : error LNK2005: __set_invalid_parameter_handler ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __amsg_exit ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __initterm_e ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(crt0dat.obj) : error LNK2005: _exit ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __exit ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __cexit ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(dosmap.obj) : error LNK2005: __errno ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(_file.obj) : error LNK2005: ___iob_func ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(mlock.obj) : error LNK2005: __unlock ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(mlock.obj) : error LNK2005: __lock ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(winxfltr.obj) : error LNK2005: __XcptFilter ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(crt0.obj) : error LNK2005: _mainCRTStartup ist bereits in MSVCRTD.lib(crtexe.obj) definiert.
1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_a ist bereits in MSVCRTD.lib(cinitexe.obj) definiert.
1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_z ist bereits in MSVCRTD.lib(cinitexe.obj) definiert.
1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_a ist bereits in MSVCRTD.lib(cinitexe.obj) definiert.
1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_z ist bereits in MSVCRTD.lib(cinitexe.obj) definiert.
1>LIBCMT.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(winsig.obj) : error LNK2005: _signal ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(fflush.obj) : error LNK2005: _fflush ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(tzset.obj) : error LNK2005: __tzset ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(atox.obj) : error LNK2005: _atoi ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(errmode.obj) : error LNK2005: ___set_app_type ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(_ctype.obj) : error LNK2005: _isspace ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(_ctype.obj) : error LNK2005: _iscntrl ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(getenv.obj) : error LNK2005: _getenv ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(strtol.obj) : error LNK2005: _strtol ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(strtol.obj) : error LNK2005: _strtoul ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(osfinfo.obj) : error LNK2005: __get_osfhandle ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LIBCMT.lib(osfinfo.obj) : error LNK2005: __open_osfhandle ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.
1>LINK : warning LNK4098: Standardbibliothek "MSVCRTD" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
1>LINK : warning LNK4098: Standardbibliothek "LIBCMT" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
1>C:\Users\Christian\Documents\Visual Studio 2008\Projects\MySQL\Debug\MySQL.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.
1>Das Buildprotokoll wurde unter "file://c:\Users\Christian\Documents\Visual Studio 2008\Projects\MySQL\MySQL\Debug\BuildLog.htm" gespeichert.
1>MySQL - 34 Fehler, 2 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

Mein complettes Visual Studio c++ 2008 Express Edition Projekt hängt an.
 

Anhänge

  • MySQL.zip
    2,1 MB · Aufrufe: 15
Du verwendest eine Library welche statisch gelinkt wird während in deinem Projekt dynamisch gelinkt wird zur Laufzeitbibliothek.
 
Die Bibliothek welche du verwendest zum Linken, wurde mit /MT kompiliert (also die C-Runtime statisch mit einkompiliert) aber dein Projekt verwendet /MD (also die C-Runtime nicht mit eincompiliert)
 
Du musst entweder in deinen Projekteinstellungen die gleiche Art der Codegenerierung wählen wie in der .lib oder eine .lib nehmen die gleich kompiliert wurde wie es in deinem Projekt eingestellt ist.
 
Zurück