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.