MySql


Thomasio

Erfahrenes Mitglied
Ä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:

deepthroat

Erfahrenes Mitglied
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ß
 

deepthroat

Erfahrenes Mitglied
Ä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ß
 

Thomasio

Erfahrenes Mitglied
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.
 

deepthroat

Erfahrenes Mitglied
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ß
 

Thomasio

Erfahrenes Mitglied
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.
 

Thomasio

Erfahrenes Mitglied
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.
 

deepthroat

Erfahrenes Mitglied
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ß
 

Neue Beiträge

Forum-Statistiken

Themen
272.360
Beiträge
1.558.622
Mitglieder
187.833
Neuestes Mitglied
SirrDansen