Seite 1 von 1

FPQCALL - Function is not declared [ERLEDIGT]

Verfasst: Do, 10. Aug 2017 14:27
von georg
Hallo,


da ich gerade ein wenig Zeit habe, experimentiere ich mal wieder mit der 2.0 Build 817.

In Bearbeitung habe ich ein grösseres Programm, das nur Teile (DLLs) verwendet, die mir auch im Xbase++-Sourcecode vorliegen, sowie die OT4XB.

Genau da hakt es. In einer DLL wird diese Anweisung (aus der .ppo-Datei) ausgeführt:

Code: Alles auswählen

function mysql_init(  pMysql  ) ;local _fp_ := nGetProcAddress( "libmysql" , iif(.F.,,"mysql_init") )   ;return ( NIL , FpQCall( _fp_ ,"__pt" +  "__pt"  ,@ pMysql ) )
Klar, die DLL enthält ein

Code: Alles auswählen

#PRAGMA Library("ot4xb.lib")
Und in dem Programm, das diese DLL verwendet, ist auch ein entsprechendes #PRAGMA drin. Und ein

Code: Alles auswählen

REQUEST fpqcall
Nützt alles nichts. Wenn ich das Programm mittels xppdbg starte und über das Command Interface "fpqcall()" eingebe, kommt als Ergebnis NIL. (Klar, keine Parameter etc. - aber kein Hinweis, dass die Funktion nicht verfügbar sei.)

Im Einsatz habe ich die aktuelle Version, die Pablo bereithält. Ich habe auch kontrolliert, dass keine älteren Versionen, Include-Dateien etc. vorhanden sind.

Also gehe ich erst einmal zurück zur 355, in der Hoffnung, dass einer von Euch eine bessere Idee hat.

Re: FPQCALL - Function is not declared

Verfasst: Fr, 11. Aug 2017 7:23
von ramses
Hallo Georg

wie sieht den der Source-Code der Funktion aus?

Ein Return mit 2 Parameter finde ich komisch. Wird FpQCall deshalb gar nicht eingebunden?

Gruss Carlo

Re: FPQCALL - Function is not declared

Verfasst: Fr, 11. Aug 2017 8:33
von georg
Hallo, Carlo -


der Source-Code sieht so aus:

Code: Alles auswählen

DLL libmysql IMPORT mysql_init AS POINTER32 ;
             PARAM  pMysql  AS POINTER32
Daher habe ich das Ergebnis des Precompilers gepostet. Der ppo-Code sieht unter der 355 identisch aus. Und es ist ja auch nicht der Compiler, der rumjammert, sondern erst die Laufzeitumgebung, die nicht in der Lage ist, fpqCall zu lokalisieren.

Re: FPQCALL - Function is not declared

Verfasst: Fr, 11. Aug 2017 10:35
von georg
So, ich muss vermelden: "Error in front of device"

Die MySQL-API libmysql.dll fehlte. Das führte zu der Fehlermeldung, dass die Funktion nicht gefunden wurde. Der Verweis auf fpqcall() bezog sich auf die Funktion, in der ein Argument fehlte.

Gut, gelöst.