MySQL C API in VC++ einbinden



  • Hallo,

    ich versuche seit gestern die Standard C API von MySQL in VC++ 2008 einzubinden, bekomme aber ständig Linkerfehler.

    MySQL 5 liegt im Verzeichnis C:\Program Files\MySQL\MySQL Server 5.0
    Dementsprechend habe ich den Projekteigenschaften ein Includeverzeichnis (C*:\Program Files\MySQL\MySQL Server 5.0\include*) und ein Verzeichnis für zusätzliche Bibliotheken (C:\Program Files\MySQL\MySQL Server 5.0\lib\opt) hinzugefügt. Des Weiteren noch die statischen Libs libmysql.lib und mysqlclient.lib. Die libmySQL.dll liegt im system32 Verzeichnis.

    Der Quelltext (zum Testen) sieht folgendermaßen aus:

    #include <windows.h>
    #include <winsock.h>
    #include <stdio.h>
    #include <mysql.h>
    
    int main(int argc, char **argv)
    {
    	MYSQL mysql;
    	printf("MySQL Client Version is %s\n",mysql_get_client_info());
    	if(mysql_init(&mysql)==NULL)
    	{
    		printf("\nFailed to initate MySQL connection");
    		exit(EXIT_FAILURE);
    	}
    	mysql_close(&mysql);
    	return EXIT_SUCCESS;
    }
    

    Beim Kompilieren entsteht folgende Ausgabe:

    1>------ Neues Erstellen gestartet: Projekt: mysql_test, Konfiguration: Debug Win32 ------
    1>Die Zwischen- und Ausgabedateien für das Projekt "mysql_test" mit der Konfiguration "Debug|Win32" werden gelöscht.
    1>Kompilieren...
    1>main.cpp
    1>Manifest in Ressourcen wird kompiliert...
    1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
    1>Copyright (C) Microsoft Corporation.  All rights reserved.
    1>Verknüpfen...
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_close@4" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_init@4" in Funktion "_main".
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_mysql_get_client_info@0" in Funktion "_main".
    1>J:\dev\cpp\nass\Debug\mysql_test.exe : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.
    1>Das Buildprotokoll wurde unter "file://j:\dev\cpp\nass\mysql_test\Debug\BuildLog.htm" gespeichert.
    1>mysql_test - 4 Fehler, 0 Warnung(en)
    ========== Alles neu erstellen: 0 erfolgreich, Fehler bei 1, 0 übersprungen ==========
    

    Es scheint also, als würde eine Lib fehlen; nur welche? Weiß jemand Rat?



  • Läuft es unter der Release-Konfigurati?



  • Frager schrieb:

    Es scheint also, als würde eine Lib fehlen; nur welche? Weiß jemand Rat?

    Ich vermute mal, dass die Lib libmysqld fehlt. Aber schau mal hier, wie Programme korrekt mit der MySQL Server-Bibliothek erstellt werden.



  • Muss man wirklich die Library des Embedded Servers einbinden? Aber einen Versuch ist es auf alle Fälle wert, werde mich morgen gleich ransetzen.

    witte schrieb:

    Läuft es unter der Release-Konfigurati?

    Nein, leider auch nicht. Aber dürfte ja auch nicht stören, wenn die Debuginformationen in den Libs nicht vorliegen (zumindest nicht beim kompilieren), oder?



  • Ich habe den Fehler gefunden: mein Programm wurde für 32bit Umgebungen kompiliert, wobei die Lib des 64bit MySQLs eingebunden wurde.



  • Ich weis das es fieleicht nicht ganzzum Thema past, aber wie kann ich bei Visual C++ eine externe API einbinden? Bin kein großer C/C++ Kenner, ist auch nicht unbedingt meine lieblings Programmiersprache, und mit Visual Studio kenn ich mich eigentlich garnix aus, aber auf der Arbeit wir halt leider das Visual Studio 2008 benutzt.


Anmelden zum Antworten