MySql

Ok, für die libMYSQLclient.a war mir das ziemlich klar, aber was ist mit mysql.h?
Wenn ich einfach mache
#include <mysql.h>
dann kommt mir der Compiler mit "no such file ..."
kopiere ich mysql.h nach C:\MinGW\include kommt der Compiler mit einem halben Dutzend anderen Meldungen, ala
mysql_com.h no such file ...
Die Frage ist also, muss ich irgendein Search directory einstellen, oder alles was ihm fehlt nach MinGW kopieren, oder was?

Und weil ich gerade am rumprobieren bin, habe ich dann noch folgendes Problem:

Ich habe einfach mal alles was ihm gefehlt hat nach MinGW/include kopiert und das Besipiel von
http://www.osix.net/modules/article/?id=517
verwendet.

Wie Joshua McQuistan in seiner Anleitung schon gesagt hat bekomme ich die Meldung
undefined reference to ´mysql_init@4'
Nachdem aber dank sed im .def alle Unterstriche entfernt sind, gibt es dort kein mysql_init, an das ich @4 anhängen könnte und wenn ich
mysqlinit@4
mache, bleibt die Fehlermeldung
undefined reference to ´mysql_init@4'
 
:offtopic:
Copy&Paste? Aus der Konsole? Vom virtuellenXP in VirtualBox zu IE8 unter Win7? Wie geht das?
Gasterweiterungen im virtuellen XP installieren, in den VirtualBox-Einstellungen für die VM das Clipboard Sharing aktivieren. Dann in XP Rechtsklick auf die Konsole, „markieren“ klicken, mit Drag&Drop Bereich auswählen und mit rechter Maustaste abschließen. Im Browser auf dem Gastsystem Strg+V drücken.

Grüße,
Matthias
 
Hui, danke, DAS wusste ich echt nicht.
Ganz am Rande was gelernt.

Wenn ich jetzt nur noch MySql die Fehlermeldungen abgewöhnen könnte ....
 
Zusatz, weil es mir gerade aufgefallen ist:

Wenn ich das zip archiv runterlade: http://dev.mysql.com/downloads/mirror.php?id=401746 und entpacke, dann gibt es da drin 2 mal eine libmysql.dll einmal unter \bin\ und einmal unter \lib\opt, aber beide schreiben sich ganz in Kleinbuchstaben, eine libmySQL.dll existiert im gesamten Archiv nicht.
Lade ich den installer runter: http://dev.mysql.com/downloads/mirror.php?id=401700 und installiere das Ganze, dann findet sich da drin eine libmySQL.dll.

Ich habe keine Ahnung, ob das wichtig ist, aber es macht scheinbar Unterschiede, denn auch wenn beide keinerlei Fehlermeldungen in der Konsole ausgeben, NUR die libmySQL.dll mit SQL in gross funktioniert mit pexports und dlltool, die anderen ergeben eine libMYSQLclient.a mit 0 byte Grösse.

In jedem Fall habe ich aber immer das Problem mit
undefined reference to ´mysql_init@4'
 
Hi.

Mir ist gerade eingefallen, das das alles auch noch etwas einfacher geht.

Der MinGW Linker ist in der Lage direkt gegen DLLs zu linken.

Also:
C:
#include <stdio.h>
#include <my_global.h>
#include <mysql.h>

int main(int argc, char **argv)
{
  printf("MySQL client version: %s\n", mysql_get_client_info());
}
Einstellungen:

Search directories -> Compiler:
%programfiles%\mysql\mysql server 5.1\include

Linker Settings -> Link libraries:
%programfiles%\mysql\mysql server 5.1\bin\libmysql.dll

\edit: Um die Linker-Warnungen zu unterdrücken:
Linker Settings -> Other linker options:
-Wl,--enable-stdcall-fixup

Ausgabe:
Code:
MySQL client version: 5.1.30
Gruß
 
Zuletzt bearbeitet:
Bei mir sagt der Compiler:

||=== MySQLTest, Release ===|
C:\MySQL\include\config-win.h|208|warning: "finite" redefined|
C:\MySQL\include\config-win.h|161|warning: this is the location of the previous definition|
C:\MySQL\include\my_global.h|616|warning: "my_reinterpret_cast" redefined|
C:\MySQL\include\config-win.h|312|warning: this is the location of the previous definition|
C:\MySQL\include\my_dbug.h|145|error: crtdbg.h: No such file or directory|
C:\MySQL\include\my_global.h||In function 'double rint(double)':|
C:\MySQL\include\my_global.h|1567|error: redefinition of 'double rint(double)'|
c:\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\math.h|698|error: 'double rint(double)' previously defined here|
||=== Build finished: 3 errors, 4 warnings ===|
 
Ausgabe

||=== MySQLTest, Release ===|
C:\MySQL\include\config-win.h|208|warning: "finite" redefined|
C:\MySQL\include\config-win.h|161|warning: this is the location of the previous definition|
C:\MySQL\include\my_global.h|616|warning: "my_reinterpret_cast" redefined|
C:\MySQL\include\config-win.h|312|warning: this is the location of the previous definition|
obj\Release\main.o:main.cpp|| undefined reference to `mysql_get_client_info@0'|
||=== Build finished: 1 errors, 4 warnings ===|
 
Zuletzt bearbeitet:
Welche Compiler Version? Linker Version?
Code:
gcc --version
gcc (GCC) 4.5.0
ld --version
GNU ld (GNU Binutils) 2.20.51.20100613
Besorg dir die neueste Version.

Gruß
 
Hui, musste ein bischen suchen, weil mingw.org grad offline ist, aber habs gefunden, 4.5.2.
Compiliert ohne Fehler, Ausgabe:
MySQL client version: 5.1.56

Nur einen kleinen Schönheitsfehler hat es noch.
Beim ausführen der .exe meckert er, dass

libgcc_s_dw2-1.dll
libmysql.dll

fehlen, sprich ich muss die dazu kopieren.
Ich weiss, das ist durchaus üblich so, aber ich habe mal irgendwo was gelesen, dass man da auch in den Linker options irgendwas mit auto import machen kann, so dass er die gleich mit in die .exe packt.
Kannst du mir dafür noch die Syntax verraten?

Auf jeden Fall ein riesen DANKE an dich, du hast mir in 2 Tagen mehr geholfen als der gesamte Rest vom Web in Monaten.
 
Zurück