
Como crear librerías
Comenzado por
ramiro_md
, jul 19 2012 04:09
8 respuestas en este tema
#1
Escrito 19 julio 2012 - 04:09
Buenas, quiero crear lo siguiente, un archivo con algunos procedures comunes en mi aplicación.
Una vez hecho, incluirlo a la unit cuando lo necesite y utilizar los procedures que definí. Algo así como un TAD.
Algo asi como los .h de C.
Saludos y gracias,
Una vez hecho, incluirlo a la unit cuando lo necesite y utilizar los procedures que definí. Algo así como un TAD.
Algo asi como los .h de C.
Saludos y gracias,
#2
Escrito 19 julio 2012 - 04:18
Que tal ramiro_md, este post en el foro oficial de Lazarus podría apoyarte, con un ejemplo para descarga:
Link:http://www.lazarus.f...hp?topic=8321.0
Saludos
Link:http://www.lazarus.f...hp?topic=8321.0
Saludos
#3
Escrito 19 julio 2012 - 04:44
Que tal ramiro_md, este post en el foro oficial de Lazarus podría apoyarte, con un ejemplo para descarga:
Link:http://www.lazarus.f...hp?topic=8321.0
Saludos
Ey muchas gracias, me ha funcionado !.
Comento un poco lo que hice, para futuras consultas mías y de terceros:
Creo una nueva Biblioteca desde "Archivo -> Nuevo -> Biblioteca".
Este es el código:
delphi
library prueba; {$mode objfpc}{$H+} uses Classes { you can add units after this }; {$R *.res} function TestDLL():integer; begin TestDLL := 1; end; exports TestDLL; begin end.
Muy sencillo, una función que devuelve 1, solo para saber si la inclusión ha sido exitosa.
La compilo y me genera el dll de nombre "prueba".
Lo incluyo a mi unit, luego del USES y antes del TYPE:
delphi
function TestDLL():integer; stdcall; external 'prueba.dll' name 'TestDLL'; { tipo de modulo + nombre + si devuelve algo + ruta del dll + el nombre para invocar en mi unit}
Acá la invoco:
delphi
ShowMessage( IntToStr(TestDLL()) );
Y sale el cartel con el 1.
Saludos y gracias !
#4
Escrito 20 julio 2012 - 12:29
Buenas,
Eso es una dll de toda la vida. Si existieran en Lazarus (que lo desconozco), yo me inclinaría por el uso de packages
Eso es una dll de toda la vida. Si existieran en Lazarus (que lo desconozco), yo me inclinaría por el uso de packages
#5
Escrito 20 julio 2012 - 07:11
Las dll de este tipo me han funcionado en varias plataformas, incluyendo Firebird con UDF y Linux; es la ventaja principal de Lazaruz aún.
Saludos
Saludos
#6
Escrito 21 julio 2012 - 05:12
Ramiro:
Tendrias que contarnos si lo que quieres son librerias de enlace dinamico o de enlace estatico. Si lo que quieres son librerias de enlace dinamico te recomiendo que leas esto http://www.freepasca...198-20800016.6, si lo que quieres son librerias de enlace estatico o modulos te recomiendo que leas esto http://www.freepasca...190-20000016.2.
Igualmente de todas formas te recomiendo que leas toda la la documentacion de fpc http://www.freepascal.org/docs.var, en especial la referencia del lenguaje http://www.freepasca...l/ref/ref.html, de esta forma podras conocer toda la potencia del lenguaje ObjectPascal.
Saludos.
Tendrias que contarnos si lo que quieres son librerias de enlace dinamico o de enlace estatico. Si lo que quieres son librerias de enlace dinamico te recomiendo que leas esto http://www.freepasca...198-20800016.6, si lo que quieres son librerias de enlace estatico o modulos te recomiendo que leas esto http://www.freepasca...190-20000016.2.
Igualmente de todas formas te recomiendo que leas toda la la documentacion de fpc http://www.freepascal.org/docs.var, en especial la referencia del lenguaje http://www.freepasca...l/ref/ref.html, de esta forma podras conocer toda la potencia del lenguaje ObjectPascal.
Saludos.
#7
Escrito 25 julio 2012 - 10:19
Si bien lo he conseguido con las DLL, creo que mi idea era el uso de la Unit.
Ya leeré todo con más detenimiento.
Saludos y gracias.
Ya leeré todo con más detenimiento.
Saludos y gracias.
#8
Escrito 26 julio 2012 - 03:57
A ver...
Segui este ejemplo al pie de la letra...
Sin embargo al compilar se me marca en rojo la ultima linea
begin
end
recuadrado en rojo y end con un fondo rojo como indicando un error.
El ide que estoy utilizando es el provisto por codeTyphon. Ah por otra parte no logro que me aparezca la ventana de mensajes como en el Lazarus común.
Si abro el proyecto desde el Lazarus comun en la ventana de mensajes me dice esto:
Rutinas.lpr(19,1) Error: Can't open resource file "C:\FuentesLazarus\Rutinas\Rutinas.res"
Una cosita mas ... las dll deseo consumirlas desde VFP para realizar una migración progresiva a Lazarus...
Gracias,
Pancho
Argentina
Segui este ejemplo al pie de la letra...
Sin embargo al compilar se me marca en rojo la ultima linea
begin
end
recuadrado en rojo y end con un fondo rojo como indicando un error.
El ide que estoy utilizando es el provisto por codeTyphon. Ah por otra parte no logro que me aparezca la ventana de mensajes como en el Lazarus común.
Si abro el proyecto desde el Lazarus comun en la ventana de mensajes me dice esto:
Rutinas.lpr(19,1) Error: Can't open resource file "C:\FuentesLazarus\Rutinas\Rutinas.res"
Una cosita mas ... las dll deseo consumirlas desde VFP para realizar una migración progresiva a Lazarus...
Gracias,
Pancho
Argentina
#9
Escrito 26 julio 2012 - 06:07
Me respondo parte del problema.
La ubicacion de las ventanas estan pensadas para una resolucion de 1024, pero yo estoy trabajando en una netbook y mi resolucion máxima es 800.
Primero pense que se trataba de un error de no mostrar las ventanas, pero revisando el CodeTyphon Center me tope con una carpeta que maneja los seteos del ide de Lazarus.
En dicha ubicacion (en el archivo environmentoptions) estan las dimensiones y ubicaciones de todas las ventanas que se ven en el ide.
En mi caso estas eran las caracteristicas de la ventana de Mensajes...
<MessagesView>
<Caption Value="Ventana de Mensajes"/>
<WindowPlacement Value="RestoreWindowGeometry"/>
<CustomPosition Top="357" Left="-146" Width="913" Height="376"/>
<WindowState Value="Normal"/>
</MessagesView>
Coloque otras ubicaciones, pero siempre resetea los valores y al salir los valores pasan a ser los mismos...
Sigo investigando para ver como puedo resolverlo.
Saludos,
Pancho
Argentina
La ubicacion de las ventanas estan pensadas para una resolucion de 1024, pero yo estoy trabajando en una netbook y mi resolucion máxima es 800.
Primero pense que se trataba de un error de no mostrar las ventanas, pero revisando el CodeTyphon Center me tope con una carpeta que maneja los seteos del ide de Lazarus.
En dicha ubicacion (en el archivo environmentoptions) estan las dimensiones y ubicaciones de todas las ventanas que se ven en el ide.
En mi caso estas eran las caracteristicas de la ventana de Mensajes...
<MessagesView>
<Caption Value="Ventana de Mensajes"/>
<WindowPlacement Value="RestoreWindowGeometry"/>
<CustomPosition Top="357" Left="-146" Width="913" Height="376"/>
<WindowState Value="Normal"/>
</MessagesView>
Coloque otras ubicaciones, pero siempre resetea los valores y al salir los valores pasan a ser los mismos...
Sigo investigando para ver como puedo resolverlo.
Saludos,
Pancho
Argentina