Prozedureinsprungspunkt nicht gefunden (libmysql.dll)

  • hallo!
    ich habe ein kleines programm in gtk und mysql geschrieben welches unter linux auch wunderbar läuft.
    nun muss ich es aber auf windows portieren und nach einiger zeit hab ich es auch geschafft mithilfe von
    mingw und msys das ganze zu kompilieren und auch richtig zu linken (zumindest gibts keine errors mehr..)
    wenn ich jetzt mein programm ausführen will bekomme ich folgende fehlermeldung:
    "Der Prozedureinsprungspunkt "mysql_fetch_row@4" wure in der DLL "libmysql.dll" nicht gefunden"
    ohne mysql läuft das programm - also nur mysql treibt mich unter windows zum wahnsinn..
    tja, und sämtliche recherche hat mich bis jetzt nicht weitergebracht..vielleicht kann mir hier jemand helfen?
    vielen dank
    bruz

    compileraufruf:

    Code
    gcc -o sepp.exe (gtk-zeug) \
    -L "C:\mysql\lib\opt" -I "C:\mysql\include" \
    -L "C:\WINDOWS\system32" -lmysql -lws2_32 -lmsvcrt20

    This is Linux land...in silent nights you can hear windows machines reboot!
    ---
    Der kleine Windows-Kobolt auf meiner linken Schulter befiehlt:"Du sollst alles NIEDERBRENNEN!"

  • Ich habe mal die libmysql.dll unter cygwin gelinkt (ist schon einige zeit her)...

    Hasst du folgendes gemacht?

    Zitat von http://www.cygwin.com/cygwin-ug-net/dll.html


    Linking Against DLLs

    If you have an existing DLL already, you need to build a Cygwin-compatible import library. If you have the source to compile the DLL, see the Section called Building DLLs for details on having gcc build one for you. If you do not have the source or a supplied working import library, you can get most of the way by creating a .def file with these commands (you might need to do this in bash for the quoting to work correctly):

    Code
    echo EXPORTS > foo.def
    nm foo.dll | grep ' T _' | sed 's/.* T _//' >> foo.def

    Note that this will only work if the DLL is not stripped. Otherwise you will get an error message: "No symbols in foo.dll".

    Once you have the .def file, you can create an import library from it like this:

    Code
    dlltool --def foo.def --dllname foo.dll --output-lib foo.a

    P.S. Wenn du das auf windoze und linux laufen haben mochtest, ware da nicht wxWidgets ne bessere wahl fur's gui :) ?

    De part de ma chandelle verte, je ne comprends pas.

  • ja hab ich gemacht - nach anweisung von:
    http://dev.mysql.com/doc/mysql/de/W…_compiling.html
    aber bis jetzt hauts nicht hin...naja und wegen gtk:
    das funktioniert super, unter win, linux und mac. und außerdem gibts glade zum designen und das spart schon einiges an zeit würd ich meinen.
    bin am überlegen ob ich den mysql-teil rausschmeiß und mal postgre probier..aber irgendwie kanns das doch nicht geben, oder?
    najo, danke jedenfalls für die antwort
    -ciao bruz

    This is Linux land...in silent nights you can hear windows machines reboot!
    ---
    Der kleine Windows-Kobolt auf meiner linken Schulter befiehlt:"Du sollst alles NIEDERBRENNEN!"

  • Vom postgre wuerde ich abraten (falls du das portabel haben mochtest, fur den postgre server gibts derzeit keinen _nativen_ windoze port).

    Poste mal ein stuck mysql quellcode (wie gesagt, ist schon einige zeit her dass ich die mysql c-api verwendet habe), ich versuche das am abend im cygwin zu kompilieren, muss doch irgentwie gehen !!!

    @gtk: lauft zwar unter win/unix/mac, wxWidgets bietet aber native UIs unter win/unix/mac :)

    De part de ma chandelle verte, je ne comprends pas.

  • danke für die antworten und erstmal entschuldigung dass ich mich erst jetzt melde - war ein paar tage ohne netz (oh mein gott.. ;) )

    hab ein bisserl herumprobiert und unter anderem das service-pack 2 installiert - seitdem kann ich mit der oben genannten gcc-zeile
    mein programm nicht mehr übersetzen - also wirds an meinen linker optionen liegen, oder?
    für testzwecke hab ich probiert das von mysql mitgelieferte testprogramm zu übersetzen
    (in <path_to_mysql>/examples/libmysqltest/) ... auch ohne erfolg!

    mein programm ist vom mysql-part her sehr einfach:
    zuerst mysql_real_connect , dann ein paar querys absetzen
    (mysql_query(&db, query), mysql_store_result(&db) ) und die ergebniszeilen abholen (mysql_fetch_row(result))
    bei programm-ende mysql_close(&db)
    das wars im großen und ganzen und diese funktionen sind auch in den mysql-beispielprogrammen dabei....

    bin für jeden hinweis _SEHR_ dankbar!
    ciao bruz

    This is Linux land...in silent nights you can hear windows machines reboot!
    ---
    Der kleine Windows-Kobolt auf meiner linken Schulter befiehlt:"Du sollst alles NIEDERBRENNEN!"

  • ok..hab jetzt die ganze prozedur mit reimp und dlltool nochmals gemacht und nun kompiliert sowohl
    mein programm und das mysql-beispiel programm wieder sang-und klanglos (soll heißen ohne warnings und linker errors usw.) nur bei
    der ausführung kommt der selbe fehler:
    "Der Prozedureinsprungspunkt "mysql_close@4" wurde in der DLL "libmySQL.dll" nicht gefunden".

    irgendwas mach ich da grob falsch - also zum verständnis:
    reimp und dlltool erzeugen libmysql.a die der compiler braucht zum korrekten linken. libmySQL.dll wird bei der ausführung
    gebraucht und soweit ich gelesen hab wurde die mit msvc kompiliert...liegt hier mein problem?

    und unter cygwin würde ich mysql kompilieren und das dann wie unter linux übersetzen, oder? braucht dann der benutzer
    auch cygwin um mein programm unter win auszuführen oder nur die cygwin.dll (eher letzteres oder?)
    ist das vielleicht der einfachere weg?

    danke, ciao bruz

    This is Linux land...in silent nights you can hear windows machines reboot!
    ---
    Der kleine Windows-Kobolt auf meiner linken Schulter befiehlt:"Du sollst alles NIEDERBRENNEN!"

  • ok..ich habs endlich entdeckt - das programm startet...ogottogott
    dlltool mit der option -k haben mein programm nun zum laufen gebracht...
    vielen dank ubu_roi und auch alex_k

    gefunden auf http://rubydotnetproxy.rubyforge.org/mysql_win.html

    Zitat

    The -k option to dlltool tells it that functions in libmySQL.dll won't have @ decorations. Otherwise you will get runtime errors when using mysql (like "Can't find function mysql_foobar@8 in libmySQL.dll)

    das steht nicht auf der mysql seite die ich oben gepostet hab - aber das mit dem k-switch hab ich irgendwo anders schon gelesen und mir auch eingebildet das läängst probiert zu haben...najo
    bin froh das es geht!!:verycool:

    This is Linux land...in silent nights you can hear windows machines reboot!
    ---
    Der kleine Windows-Kobolt auf meiner linken Schulter befiehlt:"Du sollst alles NIEDERBRENNEN!"

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!