[Lazarus-es] Problema con LoadLibrary

Juan M. Puertas soft.sirius en gmail.com
Mie Ene 28 11:51:30 CET 2015


Hola de nuevo.
He tenido que reinstalar Linux Mint Mate, y me ha surgido algo extraño.
1) Nada más instalarlo he intentado correr la aplicación mencionada en este
post que funcionaba perfectamente. Sin embargo aparece un mensaje que dice:
"There is no application installed for executable files."
 Pensaba que un ejecutable compilado con Lazarus no tenía dependencias. :-?
2) Supongo que debido a haber instalado otras aplicaciones y la última
versión de Lazarus, el ejecutable ya funciona, pero ahora, siendo el mismo,
vuelve a dar el error que ha iniciado todo este post. Entro en Lazarus,
depuro la aplicación, y efectivamente, el error se produce cuando llamo a
la función que está en la librería externa.
 ¿Será que la nueva versión de Lazarus afecta a un ejecutable creado en una
antigua versión?.
 Es todo un misterio para mi, pero como vosotros tenéis más experiencia os
pregunto por si tenéis alguna respuesta.
 Muchas gracias :-)
 Juan M.


El 21 de enero de 2015, 11:19, José Mejuto <joshyfun en gmail.com> escribió:

> El 20/01/2015 a las 20:52, Maxi escribió:
>
>> no está decorado sino explicito por el programador en la declaracion
>> del nombre a exportar
>>
>> ): Longint; stdcall; far; external 'swedll32.dll' name '_swe_calc en 24';
>>
>> Si no se le aplica el name, exporta como se define la funcion.
>>
>
> Hola,
>
> Estás confundiendo importar con exportar. El "name" de pascal es para
> *importar* una función con un nombre diferente (el que figura en la DLL) al
> que damos en el código pascal.
>
> Lo que te decía es que el autor de la DLL (swedll32.dll) ha usado el
> sistema no explícito de exportación de funciones de C y en este caso el
> linker exporta los nombres de función decorados al ser "stdcall", si fuera
> un "cdecl" no los decoraría.
>
> Si te fijas el código C original no importa con decorador:
>
> DllImport int32 FAR PASCAL swe_calc(.....)
>
> Ya que C decide que si es "FAR PASCAL" la función ha de estar decorada
> (por defecto).
>
> Extraido del MSDN:
>
> -------------------
> dllexport of a function exposes the function with its decorated name. For
> C++ functions, this includes name mangling. For C functions or functions
> that are declared as extern "C", this includes platform-specific decoration
> that's based on the calling convention. If you don't want name decoration,
> use a .def file (EXPORTS keyword).
> -------------------
>
>
> --
>
>
> _______________________________________________
> 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.*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20150128/ea4b0970/attachment-0002.html>


More information about the Lazarus-es mailing list