Clipper/FiveWin - Alguien usa el Pelles C?

 
Vista:

Alguien usa el Pelles C?

Publicado por Pedro (38 intervenciones) el 05/05/2008 18:54:20
Hola

Me gustaría saber si alguien usa el Pelles C para que me indique como hacer una DLL en 32 bytes con esta herramienta. Ya he pasado todas mis ventanas a ficheros RC pero no me genera la DLL.
¿Alguna sugerencia y/o ayudita?

Gracias de antemano

Pedro
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Alguien usa el Pelles C?

Publicado por Gabriel Pascual (16 intervenciones) el 06/05/2008 03:55:22
Esa fue una de mis primeras preguntas cuando pasé a 32 bits mis programas con FiveWin para (x)Harbour.

Puedes hacer varias cosas:

1) Usar una DLL de 32 bits vacía, (creo recordar que en la carpeta DLLs de FW viene una DLL llamada Screens32.DLL) y luego usando copy / paste ir pasando tus recursos uno a uno a esta nueva DLL de 32 bits, el Pelles "C" te permite hacer esto

2) Si ya tienes todos los recursos en un fichero RC, entonces debes de COMPILAR el fichero RC para generar una DLL y esto se presta a una explicación mas profunda sobre lo que es una DLL:

Una DLL es un producto final, es el resultado de la compilación de un código fuente, el proceso de creación de una DLL de pantallas es como sigue:

fichero. RC ----compilacion------> fichero.RES------linkado-----> fichero DLL/ fichero EXE

Piénsalo así: tu fichero .RC es el código fuente, es el equivalente de un PRG de Clipper, luego, tu tienes que compilar ese fichero .RC, para ello se utiliza el compilador de recursos de Borland que viene incluido en el BCC (BRC32.EXE), el resultado de la compilación de un RC, es un fichero .RES, que es el equivalente de un .OBJ de Clipper, finalmente el fichero .RES puede terminar en 2 formatos, como una DLL o bien como parte del EXE, esa es labor del linkador, el linker del Borland C++ (ILINK32.EXE) cogerá ese fichero .RES y lo "pegara" dentro del fichero .EXE (que es la forma correcta de trabajar, no con DLLs) o bien generará un fichero .DLL que es una "especie" de EXE. (son módulos que se integran en el exe en tiempo de ejecución).

Así que si ya tienes un .RC la única forma de ir al DLL es compilando dicho RC, para ello vas a hacer lo siguiente:

En la carpeta DLLs de FiveWin vas a encontrar un fichero .BAT llamado RC2DLL32.BAT, cópialo a la carpeta donde tienes tu fichero RC, junto con un fichero en "C" llamado SCREEN32.C que encontrarás en la misma carpeta.

y luego ejecútalo así desde MS-DOS:

RC2DLL32 tufichero.rc (no pongas la extension .RC)

Y este fichero .BAT va a compilar el Fichero.RC y va a generar una DLL de 32 bits, luego ya puedes continuar trabajando con el Pelles C y la DLL de 32 como lo hacías antes con el Workshop.

Sin embargo, el usar DLLs para la interfaz con el usuario si bien no es una forma errónea de trabajar, tampoco es la forma correcta de hacerlo, y te explico en el siguiente mensaje porque no.

..... continúa ....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Alguien usa el Pelles C?

Publicado por Gabriel Pascual (16 intervenciones) el 06/05/2008 04:25:26
Trabajar con DLLs para la interfaz con el usuario, no es la manera correcta de trabajar en Windows, es un error que venimos arrastrando desde FiveWin para Clipper a 16 bits.

En un curso de migración de aplicaciones de FW de 16 a 32 bits al que asistí con René Flores, nos enseñó que hemos vivido engañados todo el tiempo con el tema de las DLLs para guardar las pantallas de nuestros programas.

En las primeras versiones de FW para Clipper de 16 bits, erróneamente aprendimos que todas las pantallas de la interfaz con el usuario van en DLLs y eso no es lo correcto, ninguna aplicación de Windows llámese Word, Excel, Acrobat, etc tiene en una DLL las pantallas de la interfaz con el usuario, las pantallas van "fundidas" dentro del mismo EXE, y debemos dejar el tema de los DLLs para meter alli CODIGO FUENTE de funciones comunes a nuestros aplicativos.

Este error de concepto se dió en Clipper de 16 bits por una deficiencia grave, pero entendible del compilador de Clipper..... NO TIENE COMPILADOR DE RECURSOS ( y no tiene porqué tenerlo, es un compilador para aplicaciones MS-DOS, no es de esperar que tenga un compilador de recursos para Windows).

Por comodidad, con FW para Clipper de 16 bits, se utiliza el Borland Resource Workshop para editar la interfaz con el usuario, el Workshop incluye un compilador de recursos, sin embargo, es tedioso durante el proceso de desarrollo de una aplicación hacer 2 procesos de compilación: una para el código fuente y otra para los recursos.

Por un lado, hay que compilar el código fuente en PRG usando Clipper, luego hay que compilar el código fuente de los recursos usando el BRC (Borland Resouce Compiler) para luego encontrarte con la sorpresa de que el enlazador Blinker no soporta enlazado de recursos y hay que recurrir un enlazador externo para "pegar" los recursos dentro del EXE generado con blinker, y todo eso desde un fichero .BAT o RMK para Clipper, complicado para el programador novato, luego, lo mas conveniente y práctico era trabajar con la DLL.

¿ Tiene algo de malo trabajar con la DLL ? , pues no, sin embargo puede presentar algún problema en tiempo de ejecución en caso de falla de la aplicación, a mas de uno le habrá pasado que cuando el programa EXE casca, la DLL se queda pegada en memoria y hay que reiniciar el ordenador para cerrar la DLL abierta.

Otro problema de la DLL es que al ser un archivo externo de enlazado dinámico no se carga totalmente en memoria, solo se carga en memoria lo que se va necesitando, cuando se va necesitando, con lo cual cada vez que hay necesidad de un recurso nuevo, hay que hacer un acceso a disco para traerlo y cargarlo en memoria, en aplicaciones de red, donde el EXE y su DLL se ponen en un disco compartido del servidor, esto provoca tráfico en la red porque cada vez que se necesita un recurso del DLL y este no se encuentra cargado en la memoria, hay que ir a buscarle al disco de la red, si bien con las velocidades de red que tenemos actualmente y los gigas de memoria RAM esto no es problema, tampoco es la forma correcta de trabajar.

La forma correcta de trabajar, es "pegando" los recursos dentro del EXE, con esto tienes la ventaja de que una vez cargado el EXE, tienes cargados los recursos, liberas memoria de trabajo al no tener que tener una DLL abierta con los recursos (cosa que se agrava si utilizar recursos de Borland, entonces necesitas DOS DLLs abiertas) y tu aplicación tendrá un mejor desempeño y será mas fácil de distribuir, un solo EXE, sin DLLs para las pantallas.

¿ Como haces para "pegar" un RC dentro del EXE ?, deja que las herramientas trabajen por tí, a 32 bits con Harbour, tienes herramientas que te permiten hacer el proceso de compilado y enlazado de una manera visual, tienes el VerCE, el AJMake, el xMate, el XEdit, el xHarbour Builder, etc.

Estas herramientas te generan los EXE a 32 bits, tu solo tienes que indicar de manera visual la ubicacion de tu (x)Harbour, de tu Borland C++, de tu código fuente Y DE TU FICHERO.RC, el proceso de compilación que ejecutan estas herramientas hará la compilación del RC y el linkado de los recursos dentro del EXE, tu no tienes que preocuparte de nada.

Así que mi consejo es: Olvidate de los DLLs para las pantallas, y mete los recursos dentro del EXE.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Alguien usa el Pelles C?

Publicado por Pedro (38 intervenciones) el 06/05/2008 09:40:41
Gabriel
El tema de hacerlo así es por comodidad, el programa ya está hecho, lo hice en FW 16 bytes, lo he compilado con habour y no me ha dado problemas, bueno sí uno, que uso el SIX y debo quitarlo y ver como meter los comandos del driver dbfcdx, que, creo que no son los mismos que el SIX, pero eso es lo de menos ahora.
El tema era no tocar la fórmula del programa que trabaja con una DLL donde están las ventanas de diálogo, los iconos y los bmp.

Gracias por tu explicación que me será muy válida para los siguientes proyectos.

Un abrazo
Pedro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Alguien usa el Pelles C?

Publicado por joaquin Baez (1 intervención) el 05/06/2014 23:17:08
ok, pero no me queda claro,,

yo tengo una archivo DLL y quiero compilar ya con fiwevin a 64 que debo de hacer para para pasar mi DLL a una RC ya que al compilar mi programa no medeja
y posteriormente que editor debo de ocupar para poder seguir creando recuersos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar