MySql

Ähem .... Nachtrag

Das hat genau 1 Mal funktioniert.
Ohne jede Änderung an Settings oder Code habe ich einfach Build - Rebuild geklickt und habe jetzt wieder

||=== MySQLTest, Release ===|
C:\MySQL\include\config-win.h|208|warning: "finite" redefined|
C:\MySQL\include\config-win.h|161|note: 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|note: this is the location of the previous definition|
||=== Build finished: 2 errors, 2 warnings ===|

edit:
Das ist sogar relativ logisch, denn

config-win.h

steht unter C:\MySQL\include

dort findet sich in Zeile 161

#define finite(X) _finite(X)

und in Zeile 208

#define finite(A) _finite(A)

ein Update von MinGW/GCC ändert daran nichts.
 
Zuletzt bearbeitet:
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.
Da hast du etwas missverstanden.

Damit das funktioniert müßte man die MySQL Bibliothek statisch kompilieren und dann die statische Bibliothek linken.

Es gibt auch kostenpflichtige oder besser kostspielige Software wie "DLL to Lib" (http://www.binary-soft.com/dll2lib/dll2lib.htm).

Generell müssen DLLs zur Laufzeit gefunden werden können.

Gruß
 
Ähem .... Nachtrag

Das hat genau 1 Mal funktioniert.
Ohne jede Änderung an Settings oder Code habe ich einfach Build - Rebuild geklickt und habe jetzt wieder

||=== MySQLTest, Release ===|
C:\MySQL\include\config-win.h|208|warning: "finite" redefined|
C:\MySQL\include\config-win.h|161|note: 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|note: this is the location of the previous definition|
||=== Build finished: 2 errors, 2 warnings ===|
Das sind nur Warnungen. Leider erkennt Code::Blocks die "note:" Zeilen als Fehler...

Drück einfach nochmal auf F9.

Gruß
 
Ok, F9 geht, nicht so schön mit den Warnungen, aber seis drum, solange es funktioniert ist mir geholfen.

Zum auto import, das kenne ich aus MinGW64, bzw. habe ich irgendwo im Web gefunden.
Jede 64bit Anwendung braucht immer die

w64gcc_s_sjlj-1.dll

die findet sich unter \MinGW64\bin und die muss ich zu jedem Programm dazu kopieren.

Mache ich aber unter

Project - Build Options
Linker Settings - Other linker options:

-static-libgcc -static-libstdc++
-WI -enable-auto-import

dann muss ich nichts mehr zur .exe dazu kopieren, sondern es funktioniert ohne.
Ich dachte halt, etwas entsprechendes könnte es für MinGW32 auch geben.
 
Ok, F9 geht, nicht so schön mit den Warnungen, aber seis drum, solange es funktioniert ist mir geholfen.

Zum auto import, das kenne ich aus MinGW64, bzw. habe ich irgendwo im Web gefunden.
Jede 64bit Anwendung braucht immer die

w64gcc_s_sjlj-1.dll

die findet sich unter \MinGW64\bin und die muss ich zu jedem Programm dazu kopieren.

Mache ich aber unter

Project - Build Options
Linker Settings - Other linker options:

-static-libgcc -static-libstdc++
-WI -enable-auto-import

dann muss ich nichts mehr zur .exe dazu kopieren, sondern es funktioniert ohne.
Ich dachte halt, etwas entsprechendes könnte es für MinGW32 auch geben.
Das ist etwas völlig anderes. Der Auto-Import führt dazu das automatisch DLLs zum Programm gelinkt werden wenn undefinierte Referenzen auftreten.

Die static-libgcc und -static-libstdc++ Optionen führen dazu das die statischen Versionen der gcc und stdc++ Bibliothek gelinkt werden. Von diesen Bibliotheken existieren aber auch statische Versionen - von MySQL nicht.

Gruß
 
Das klingt logisch.
Ich sage nochmal ganz vielen Dank.

Ich habe die dumpfe Ahnung, dass ich bald wieder da bin, mit weiteren Fragen, weil ich wieder zu blöd für irgendwas bin, aber fürs erste bin ich mal glücklich.
 
Nachtrag:

Nachdem ich anderweitig einen Hinweis gefunden habe, dass my_globals.h gar nicht nötig ist, habe ich es einfach mal ohne ausprobiert.
Allerdings muss man in dem Fall winsock2.h includen.

Link liraries:

\MySQL\bin\libmySQL.dll
\MinGW\lib\libwsock32.a

Other linker options:

-Wl,--enable-stdcall-fixup

Code:
#include <winsock2.h>
#include <stdio.h>
#include <mysql.h>

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

und siehe da, völlig ohne Error oder Warnungen, funktioniert einfach.

Ob das alles auch noch funktioniert, wenn ich connect und queries verwende und das Ganze von Konsole zu Win32 Anwendung wird, muss ich noch rausfinden, aber im Moment bin ich mal optimistisch.
 
Hi.

Bezügl. der falsch verarbeiteten Info-Meldungen:

Settings->Compiler and Debugger -> Other settings -> Advanced Options -> Output Parsing

Ändere den regulären Ausdruck für "Preprocessor error" in
Code:
([][{}() \t#%$~A-Za-z0-9_:+/\.-]+):([0-9]+):[0-9]+:[ \t]error:[ \t](.*)

Ändere den regulären Ausdruck für "Compiler note" in
Code:
([][{}() \t#%$~A-Za-z0-9_:+/\.-]+):([0-9]+):([0-9]+)?[ \t][Nn]ote:[ \t](.*)
und stelle Message auf 4.

Gruß
 
Zurück