[Lazarus-es] Problema con libreria c

Maxi maximiliano.duarte en gmail.com
Vie Ago 17 11:13:47 CEST 2012


El día 16 de agosto de 2012 17:47, Maikel Enrique Pernía Matos
<reprepoli2mz en infomed.sld.cu> escribió:
> Maxi, creo que no es tan simple como lo haces ver, pues algo que caracteriza
> los códigos escritos en C y C++ es el empleo de punteros que es más que
> conversión entre tipos de datos y esto si puede ser una gran barrera para
> reescribir estos ficheros cabeceras a object pascal pues aquí es más
> moderado el uso de estos.
>
> El jue, 16-08-2012 a las 17:02 -0300, Maxi escribió:
>
> El día 16 de agosto de 2012 16:57, Maikel Enrique Pernía Matos
>>
>> <reprepoli2mz en infomed.sld.cu> escribió:
>> > Con esto tengo mis dudas, he utilizado poco librerías de terceros o
>> > propias
>> > y en app que he desarrollado en object pascal (estas han sido desde
>> > delphi);
>> > pero recuerdo que cada librería se aconmpañaba con un fichero *.pas que
>> > declaraba las funciones que dicha librería exportaba y entonces era que
>> > podía vincularlas con mi app esto desde la clausula "use" de mi fichero
>> > *.pas. En C y C++ lo ha realizado con más frecuencia fundamentalmente
>> > desde
>> > GNU/Linux y de manera similar cada librería se acompaña con un fichero
>> > de
>> > cabeceras *.h donde se declaran las mismas funciones que se exportan
>> > desde
>> > la librería ya sea dinámica *.so o estática *.a y se vinculan a mi app
>> > así:
>> > #include <nombre_libreria.h> o  #include "nombre_libreria.h".
>> > Pregunto:
>> > ¿Qué habría que hacer, crear la librería y llevar los *.h a *.pas o
>> > utilizar
>> > la librería y los *.h?
>> >
>> > El jue, 16-08-2012 a las 16:37 -0300, Maxi escribió:
>> >
>> > 2012/8/16 Pedraza Sergio <spedraza69 en hotmail.com>:
>> >>
>> >> > Te paso los archivos make tanto de windows como Linux
>> >> >
>> >> > make_win32
>> >> > --------------------------------------------------
>> >> > INCLUDE=-I.
>> >> > CXXFLAGS=$(INCLUDE) -DP_WIN32 -DP_WIN32_GCC
>> >> > FISCAL_LIB=clasefiscal.a
>> >> > all: $(FISCAL_LIB) clasefiscal
>> >> >
>> >> > #depend:
>> >> > #    makedepend $(INCLUDE) *.cpp
>> >> >
>> >> > clasefiscal_objs =  debug.o Excepcion.o ImpresorFiscal16Bits.o \
>> >> >         ImpresorFiscal8Bits.o ImpresorFiscal.o Mutex.o P262_100.o \
>> >> >         P272_100.o P320_100.o P321_100.o P322_100.o P322_201.o P322.o
>> >> > \
>> >> >         P330_100.o P330_201.o P330_202.o P330.o P425_100.o P425_201.o
>> >> > \
>> >> >         P425.o P435_100.o P435_101.o P435.o P614_100.o P615_100.o \
>> >> >         P715_100.o P715_201.o P715_302.o P715_403.o P715.o P950_100.o
>> >> > \
>> >> >         P951_100.o PJ20_100.o PPL8_100.o PPL8_201.o PPL8.o PPL9_100.o
>> >> > \
>> >> >         PPR4_100.o PPR5_100.o PPR5_201.o PPR5.o PPL23_100.o
>> >> > PPL23_101.o
>> >> > \
>> >> >         PPL23.o Protocolo.o PuertoSerie.o Socket.o ssplit.o Chars.o \
>> >> >         Select.o
>> >> > $(FISCAL_LIB): $(clasefiscal_objs)
>> >> >    ar rvu $(FISCAL_LIB) $(clasefiscal_objs)
>> >> >    ranlib $(FISCAL_LIB)
>> >> >
>> >> > clasefiscal: ClaseFiscal.o $(FISCAL_LIB)
>> >> >    $(CXX) ClaseFiscal.o $(FISCAL_LIB) -o clasefiscal -lwsock32
>> >> > --------------------------------------------------
>> >> >
>> >> > makefile_linux
>> >> > ---------------------------------------------------
>> >> > INCLUDE=-I.
>> >> > CXXFLAGS=$(INCLUDE) -DP_LINUX
>> >> > FISCAL_LIB=clasefiscal.a
>> >> > all: $(FISCAL_LIB) clasefiscal
>> >> >
>> >> > #depend:
>> >> > # makedepend $(INCLUDE) *.cpp
>> >> >
>> >> > clasefiscal_objs =  debug.o Excepcion.o ImpresorFiscal16Bits.o \
>> >> >         ImpresorFiscal8Bits.o ImpresorFiscal.o Mutex.o P262_100.o \
>> >> >         P272_100.o P320_100.o P321_100.o P322_100.o P322_201.o P322.o
>> >> > \
>> >> >         P330_100.o P330_201.o P330_202.o P330.o P425_100.o P425_201.o
>> >> > \
>> >> >         P425.o P435_100.o P435_101.o P435.o P614_100.o P615_100.o \
>> >> >         P715_100.o P715_201.o P715_302.o P715_403.o P715.o P950_100.o
>> >> > \
>> >> >         P951_100.o PJ20_100.o PPL8_100.o PPL8_201.o PPL8.o PPL9_100.o
>> >> > \
>> >> >         PPR4_100.o PPR5_100.o PPR5_201.o PPR5.o PPL23_100.o
>> >> > PPL23_101.o
>> >> > \
>> >> >         PPL23.o Protocolo.o PuertoSerie.o Socket.o ssplit.o Chars.o \
>> >> >         Select.o
>> >> > $(FISCAL_LIB): $(clasefiscal_objs)
>> >> > ar rvu $(FISCAL_LIB) $(clasefiscal_objs)
>> >> > ranlib $(FISCAL_LIB)
>> >> >
>> >> > clasefiscal: ClaseFiscal.o $(FISCAL_LIB)
>> >> > $(CXX) ClaseFiscal.o $(FISCAL_LIB) -o clasefiscal -lpthread
>> >> >
>> >> >
>> >> > --------------------------------------------------------------------------
>> >> >
>> >> > La pregunta es como hago para compilar y transformar el codigo en c
>> >> > en
>> >> > una
>> >> > libreria para windows o Linux ?
>> >> >
>> >> > Muchas Gracias
>> >> > Sergio Pedraza
>> >> >
>> >> >
>> >> > --------------------------------------------------
>> >> > From: "Maxi" <maximiliano.duarte en gmail.com>
>> >> > Sent: Monday, August 13, 2012 11:54 AM
>> >> > To: "Spanish version of Lazarus List"
>> >> > <lazarus-es en lists.lazarus.freepascal.org>
>> >> > Subject: Re: [Lazarus-es] Problema con libreria c
>> >> >
>> >> >> Y el codigo?
>> >> >>
>> >> >> --
>> >> >> El que pregunta aprende, y el que contesta aprende a responder.
>> >> >>
>> >> >> No a la obsolecencia programada:
>> >> >>
>> >> >>
>> >> >>
>> >> >> http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html
>> >> >>
>> >> >> 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
>> >> >>
>> >> >
>> >> > _______________________________________________
>> >> > Lazarus-es mailing list
>> >> > Lazarus-es en lists.lazarus.freepascal.org
>> >> > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>> >>
>> >> con make desde linux te crea el archivo.o que el la libreria, si tenes
>> >> todos los fuentes no necesitas transformarlo a pascal sino generar la
>> >> dll y usarla con las declaraciones en tu fuente y listo. Creoque podes
>> >> usar make en windows.
>> >>
>> >> --
>> >> El que pregunta aprende, y el que contesta aprende a responder.
>> >>
>> >> No a la obsolecencia programada:
>> >>
>> >>
>> >> http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html
>> >>
>> >> 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
>> >>
>> >
>> > ----------------------------------------------------------------
>> > This message was sent using IMP, the Internet Messaging Program.
>> >
>> >
>> > --
>> >
>> > Este mensaje le ha llegado mediante el servicio de correo electronico
>> > que
>> > ofrece Infomed para respaldar el cumplimiento de las misiones del
>> > Sistema
>> > Nacional de Salud. La persona que envia este correo asume el compromiso
>> > de
>> > usar el servicio a tales fines y cumplir con las regulaciones
>> > establecidas
>> >
>> > Infomed: http://www.sld.cu/
>> >
>> >
>> > _______________________________________________
>> > Lazarus-es mailing list
>> > Lazarus-es en lists.lazarus.freepascal.org
>> > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>
>> tenes que pasar los .h a .pas manteniendolos tipos de datos iguales,
>> si usa un int en C, integer en pascal, los struct a record, esto es lo
>> que hizo Delphi para usar las apis de windows.
>>
>>
>>
>
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.
>
>
> --
>
> Este mensaje le ha llegado mediante el servicio de correo electronico que
> ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema
> Nacional de Salud. La persona que envia este correo asume el compromiso de
> usar el servicio a tales fines y cumplir con las regulaciones establecidas
>
> Infomed: http://www.sld.cu/
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

todo lo que hagas en c o c++ lo podes hacer en pascal y Object pascal.
Y mas facil, que no sepas todo de los 2 lenguajes es otra cosa. Delphi
y CBuilder usan la misma vcl y estan escritas una en C y la otra en
pascal. En Lazarus pasa lo mismo si abris las unidades que hacen
referencia a las apis vas a ver punteros a estructuras, punteros a
tipos de datos y otras cosas.
No veo porque no se pueda, no es facil porque hay que tener cuidado
con los tipos de datos, sobre todo con los enteros si es de 16 o 32
bits, pero las funciones exportadas no deben ser muchas.

-- 
El que pregunta aprende, y el que contesta aprende a responder.

No a la obsolecencia programada:
http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html

Linux User #495070
http://domonetic.com/blog




More information about the Lazarus-es mailing list