[Lazarus-es] Problema con libreria c

Maikel Enrique Pernía Matos reprepoli2mz en infomed.sld.cu
Vie Ago 17 16:44:54 CEST 2012


Maxi:
No recuerdo haber mencionado que sea imposible el empleo de punteros,  
tampoco es mi intención establecer un debate sobre lo que se puede o  
no en estos lenguajes, que para mi son fabulosos, el objetivo de este  
hilo es ayudar a quien posteó el primer e-mail, y esta ayuda a mi modo  
de ver; debe reflejar las opciones más sencillas posibles y explicar  
todos los posibles inconvenientes,  tal vez tu sean un gurú en ambos  
lenguajes pero ¿y los demás...? creo que es bueno llegar entre todos a  
las soluciones más favorables para quienes en esta lista pedimos ayuda.

Maxi <maximiliano.duarte en gmail.com> escribió:

> 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
>
> _______________________________________________
> 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/




More information about the Lazarus-es mailing list