<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">Hola de nuevo.<br></div><div class="gmail_default" style="font-family:verdana,sans-serif">He tenido que reinstalar Linux Mint Mate, y me ha surgido algo extraño.<br></div><div class="gmail_default" style="font-family:verdana,sans-serif">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: <br>"There is no application installed for executable files."<br></div><div class="gmail_default" style="font-family:verdana,sans-serif"></div><div class="gmail_default" style="font-family:verdana,sans-serif"> Pensaba que un ejecutable compilado con Lazarus no tenía dependencias. :-?<br></div><div class="gmail_default" style="font-family:verdana,sans-serif">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.<br></div><div class="gmail_default" style="font-family:verdana,sans-serif"> ¿Será que la nueva versión de Lazarus afecta a un ejecutable creado en una antigua versión?.<br></div><div class="gmail_default" style="font-family:verdana,sans-serif"> Es todo un misterio para mi, pero como vosotros tenéis más experiencia os pregunto por si tenéis alguna respuesta.<br></div><div class="gmail_default" style="font-family:verdana,sans-serif"> Muchas gracias :-)<br></div><div class="gmail_default" style="font-family:verdana,sans-serif"> Juan M.<br></div><div class="gmail_default" style="font-family:verdana,sans-serif"> <br></div></div><div class="gmail_extra"><br><div class="gmail_quote">El 21 de enero de 2015, 11:19, José Mejuto <span dir="ltr"><<a href="mailto:joshyfun@gmail.com" target="_blank">joshyfun@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">El 20/01/2015 a las 20:52, Maxi escribió:<span class=""><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
no está decorado sino explicito por el programador en la declaracion<br>
del nombre a exportar<br>
<br>
): Longint; stdcall; far; external 'swedll32.dll' name '_swe_calc@24';<br>
<br>
Si no se le aplica el name, exporta como se define la funcion.<br>
</blockquote>
<br></span>
Hola,<br>
<br>
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.<br>
<br>
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.<br>
<br>
Si te fijas el código C original no importa con decorador:<br>
<br>
DllImport int32 FAR PASCAL swe_calc(.....)<br>
<br>
Ya que C decide que si es "FAR PASCAL" la función ha de estar decorada (por defecto).<br>
<br>
Extraido del MSDN:<br>
<br>
-------------------<br>
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).<br>
-------------------<div class="HOEnZb"><div class="h5"><br>
<br>
-- <br>
<br>
<br>
______________________________<u></u>_________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lists.lazarus.freepascal.org" target="_blank">Lazarus-es@lists.lazarus.<u></u>freepascal.org</a><br>
<a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.<u></u>freepascal.org/mailman/<u></u>listinfo/lazarus-es</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><i><font size="1"><span>Nota: Por problemas con el e-mail. Puede que recibas de nuevo este mensaje
en un tiempo.</span></font></i></div>
</div>