[ contenidos | #winprog ]

Herramientas de L�nea de Comando para Borland C++

C�mo Obtenerlas

Afortunadamente para aquellos que quieren introducirse en el desarrollo en Windows, Borland ha ofrecido sus herramientas de l�nea de comando para el p�blico en general de forma gratu�ta. �Que car�cteristicas tienen estos compiladores? Bueno, no incluyen un hermoso IDE (Entorno Integrado de Desarrollo) o un editor de recursos, pero debo decir que el compilador en s� es mejor (lejos) que LCC-Win32 (el cual a�n no inluye C++) o la gran cantidad que andan dando vueltas como gcc, mingw, cygwin, djgpp, etc...

Lee el archivo Readme para obtener ayuda de c�mo configurarlo.

Borland C++ 5.5 Lo bueno de este compilador es que viene con un debugger! No lo he usado, por lo tanto no puedo ofrecerte mucha ayuda sobre �l, pero es mejor que nada. Si has usado Turbo C++ en la �poca del DOS, puedo decirte que es algo parecido.

Por alguna raz�n Internet Explorer parece tener alg�n problema descargando este archivo, ya que hacer click sobre el link no funciona. Lo mejor es hacer click con el bot�n derecho y luego hacer click en copiar v�nculo, por �ltimo usa tu cliente FTP favorito para descargarlo.

Turbo Debugger

Por �ltimo, pero no menos importante, un archivo de ayuda de Windows con una Referencia Completa de Win32 API. Tiene algunos a�os, pero todav�a es apropiada y es mucho mas conveniente que MSDN online, a menos que necesites acceder a los agregados mas recientes en la API. Yo los uso regularmente.

Win32 API Reference

C�mo usarlas

Comandos B�sicos

Si quieres compilar un programa de un solo archivo (por ejemplo simple_window.c), entonces puedes usar el siguiente comando:
bcc32 -tW simple_window.c

La opci�n -tW especifica una aplicai�n GUI Win32, en vez de la aplicaci�n en consola que se utiliza por default. Puedes compilar m�ltiples archivos dentro de un solo archivo .exe agregando los otros archivos al final de dicho comando.

Enlazando los Recursos

Este es un aspecto muy frustante para muchos usuarios de l�nea de comando, parece ser que borland intenta hacerlo lo mas dif�cil posible. El compilador de recursos brc32 no se comporta como lo hac�a en las primeras versiones donde pod�a enlazar los recursos compilados dentro de el archivo .exe. Cuando ejecutas brc32 sin opciones para obtener la ayuda, todav�a muestra una opci�n para poner el enlazado .exe enOFF, pero parece no haber una forma de ponerlo en ON.

He intentado varias combinaciones de comandos y opciones pero no encuentro la forma de agregar un archivo .res a un .exe creado con el m�todo anterior, lo que es bastante molesto debido a que la forma que he encotrado para hacerlo es bastante mas complicada.

Sin embargo hay una forma f�cil...

BC++ ahora tienen un m�todo alternativo para incluir recursos en un programa mediante el uso de un #pragma (una directiva no-est�ndar del preprocesador que el compilador ignorar� si no la reconoce).

#pragma resource "app_name.res"

Al poner este c�digo dentro de tu archivo principal .c o .cpp, el compilador autom�ticamente enlazar� el archivo .res que es generado a partir de archivo de recursos .rc (.res es como un .obj)

Usar la directiva #pragma te permitir� compilar programas de una forma simple como la anterior, pero recuerda que antes necesitas compilar el archivo .rc usando brc32.

La forma dif�cil

Estos son los comando que hay que usar para compilar el ejemplo dlg_one, incluyendo el archivo de recursos.

bcc32 -c -tW dlg_one.c
ilink32 -aa -c -x -Gn dlg_one.obj c0w32.obj,dlg_one.exe,,import32.lib cw32.lib,,dlg_one.res

La opci�n -c de bcc32 significa "solo compilar", no enlazar dentro de un .exe. Las opciones -x -Gn libera algunos archivos extra que genera el enlazador, que probablemente no necesites.

Para hacer las cosas mas f�cil, lo mejor es hacer todo esto en un archivo makefile. He preparado uno gen�rico que deber�a funcionar con todos los ejemplos de este tutorial y deber�as ser capaz de adaptarlo a cualquiera de tus programas.

APP      = dlg_one
EXEFILE  = $(APP).exe
OBJFILES = $(APP).obj 
RESFILES = $(APP).res
LIBFILES =
DEFFILE  =

.AUTODEPEND
BCC32   = bcc32
ILINK32 = ilink32
BRC32   = brc32

CFLAGS  = -c -tWM- -w -w-par -w-inl -W -a1 -Od
LFLAGS  = -aa -V4.0 -c -x -Gn
RFLAGS  = -X -R 
STDOBJS = c0w32.obj
STDLIBS = import32.lib cw32.lib

$(EXEFILE) : $(OBJFILES) $(RESFILES)
   $(ILINK32) $(LFLAGS) $(OBJFILES) $(STDOBJS), $(EXEFILE), , \
      $(LIBFILES) $(STDLIBS), $(DEFFILE), $(RESFILES)

clean:
   del *.obj *.res *.tds *.map

S�lo necesitas modificar las primeras 6 l�neas con la informaci�n apropiada.


Copyright © 1998-2003, Brook Miles (theForger). All rights reserved.

Versi�n en Espa�ol: FedericoPizarro - 2003