[Lazarus-es] Problema con LoadLibrary
Juan M. Puertas
soft.sirius en gmail.com
Jue Ene 15 23:26:10 CET 2015
Hola amigos.
Estoy intentando utilizar una biblioteca escrita en C. La declaración que
funciona en Delphi de la función que voy a utilizar es la siguiente:
_________________________________________________________
function swe_calc_Win(
tjd : double; {Julian day number}
ipl : Integer; {planet number}
iflag : Longint; {flag bits}
var xx : double; {first of 6 doubles}
sErr : PChar {Error-String}
): Longint; stdcall; far; external 'swedll32.dll' name '_swe_calc en 24';
_________________________________________________________
Ahora estoy escribiendo con Lazarus un programa que funcione en Windows y
en Linux de la siguiente manera:
_________________________________________________________
uses ...dynlibs...
(...)
type
swe_calc = function(tjd : double; {Julian day number}
ipl : Integer; {planet number}
iflag : Longint; {flag bits}
var xx : double; {first of 6 doubles}
sErr : PChar {Error-String}
): Longint; stdcall;
var
astro_Handle:TLibHandle=dynlibs.NilHandle;
swCalc: swe_calc;
FuncResult: longint;
xx : array [0..6] of double;
err: PChar;
(...)
{$IFDEF Windows}
astro_Handle := LoadLibrary('swedll32.dll');
{$ELSE}
astro_Handle := LoadLibrary('libswe.so');
{$ENDIF}
swCalc := swe_calc(GetProcedureAddress(astro_Handle, 'swe_calc'));//
'_swe_calc en 24'));
FuncResult:= swCalc(julday,0,SEFLG_MOSEPH,xx[0],err); // *** ERROR
__________________________________________________________
Cuando llamo a la función me da el siguiente error:
"El proyecto syrius ha lanzado una excepción de la clase 'External:
SIGSEGV'."
Mirando el ensamblador aparece:
"00000000 ??????"
Es decir; que al parecer el error lo da la biblioteca en C.
Las posibilidades sobre lo que he hecho mal que se me ocurren son:
1) ¿Habré declarado mal xx?
2) ¿Tendré que recompilar 'libswe.so' para esta distro de Linux en concreto?
Agradezco vuestra ayuda :-)
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20150115/5ea30a41/attachment-0002.html>
More information about the Lazarus-es
mailing list