[Lazarus-es] Problema con LoadLibrary

Maxi maximiliano.duarte en gmail.com
Sab Ene 17 15:10:27 CET 2015


Seguramente esta intentado liberar o usar memoria que no tiene

desde el celu
El ene 17, 2015 8:58 AM, "Juan M. Puertas" <soft.sirius en gmail.com> escribió:

> ​​Muchas gracias Maxi. :-)
> Lo he resuelto asignando un valor a err.
> Ahora todo va bien, pero al salir de la función en la que se encuentra la
> llamada a la biblioteca en C, (en el end;) me da el error: "El proyecto
> syrius ha lanzado una excepción de la clase 'External: SIGSEGV'."
>
>  ¿Alguien sabe por qué pasa esto?.
>  Gracias.
>
>
>
> El 16 de enero de 2015, 13:27, Maxi <maximiliano.duarte en gmail.com>
> escribió:
>
>> antes de llamarla debes asegurarte que pudo cargar la libreria,
>> revisando que no esté en nil swCalc .
>> Por otro lado probaste de cargarla estaticamente para ver sino no es
>> un error de tipo de declaracion?
>>
>> El día 15 de enero de 2015, 19:26, Juan M. Puertas
>> <soft.sirius en gmail.com> escribió:
>> > 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 :-)
>> >
>> >
>> > _______________________________________________
>> > Lazarus-es mailing list
>> > Lazarus-es en lists.lazarus.freepascal.org
>> > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>> >
>>
>>
>>
>> --
>> El que pregunta aprende, y el que contesta aprende a responder.
>>
>> No a la obsolecencia programada:
>>
>> http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml
>>
>> Linux User #495070
>> http://domonetic.com/blog
>>
>> _______________________________________________
>> Lazarus-es mailing list
>> Lazarus-es en lists.lazarus.freepascal.org
>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>
>
>
>
> --
> *Nota: Por problemas con el e-mail. Puede que recibas de nuevo este
> mensaje en un tiempo.*
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20150117/7c13cf0a/attachment-0002.html>


More information about the Lazarus-es mailing list