Page 1 of 6

Compilar con hmbk2 es complicado, pero...

Posted: Fri Sep 13, 2024 10:31 pm
by leandro
Fue solucionado con la ayuda de todos, muchas gracias por todo :D :D :D :D

Buenas tardes para todos he intentado hacer la compilación por lo menos de un prg, para iniciar con la migración de 64bits, e intentado por todos los medios, por ultimo me decante por hacerlo con hbmk2, como nos indico Antonio en el curso, lo quiero hacer con las siguientes herramientas para intentar encontrar la menor oposición posible, pero es realmente desgastante.

Ya descargue el borland y lo copie en la carpeta:
c:\bcc770_64

Tambien el XHARBOUR en la carpeta:
c:\xHar2407_64

El FW en la carpeta
c:\fwh64_2407

Cree una carpeta para colocar el GO y los otros archivos del hbmk2 llamada
c:\cmplar_64

Dentro de esa carpeta colocamos otra carpeta con el contenido de los archivos del proyecto
c:\cmplar_64\hbmk2_bcc64
Como se muestra en la siguiente imagen
Image

Ahora creemos que nos hace falta hmk2.exe, descargamos la distribución de harbour desde gtihub para copiar el ejecutable, pero nada error en el archivo zip, saben a que se debe ese error?

Image

Después de que pueda descargar el hbmk2.exe quisiera comprobar si esta misma configuración nos sirve para compilar con XHARBOUR, en las rutas comentadas, por que no veo en donde configuramos las rutas para XHARBOUR en el archivo hbp

Borland 64 bits
go64.bat

Code: Select all | Expand

set bcc=c:\bcc770_64
set path=c:\%bcc%\bin
set HB_USER_CFLAGS=-Ic:\%bcc%\INCLUDE\windows\crtl -Ic:\%bcc%\INCLUDE\windows\sdk -Lc:\%bcc%\LIB
set HB_USER_LDFLAGS=-Lc:\%bcc%\LIB;c:\%bcc%\LIB\psdk
c:\harbour\bin\win\bcc64\hbmk2.exe test.hbp -comp=bcc64
 
test.hbp

Code: Select all | Expand

-gui

test.prg

#-info
#-traceonly
-workdir=

-optim-
-ldflag+=-aa
-Ic:\fwh64_2407\include
-Lc:\fwh64_2407\lib

-lfive64
-lfivec64

hbct.hbc
xhb.hbc
hbziparc.hbc
 
Gracias de antemano

Re: Compilar con hmbk2 es realmente frustrante

Posted: Sat Sep 14, 2024 1:46 am
by ruben Dario
Otra alternativa es usar el .bat con .mak , funciona muy bien

Re: Compilar con hmbk2 es realmente frustrante

Posted: Sat Sep 14, 2024 5:06 am
by Antonio Linares
Soporte de xHarbour para hbmk2

1. copiar hbmk2.exe a c:\xharbour64\bin

go64.bat (flag -xhb al llamar a hbmk2.exe)

Code: Select all | Expand

set bcc=bcc7764
set path=c:\%bcc%\bin
set HB_USER_CFLAGS=-Ic:\%bcc%\INCLUDE\windows\crtl -Ic:\%bcc%\INCLUDE\windows\sdk -Lc:\%bcc%\LIB
set HB_USER_LDFLAGS=-Lc:\%bcc%\LIB;c:\%bcc%\LIB\psdk
c:\xharbour64\bin\hbmk2.exe test.hbp -comp=bcc64 -xhb
busca la libreria cw64.lib, todas las demas las usa como *.a

Solución:
En c:\bcc7764\lib hacer:
copy cw64.a cw64.lib

Las librerias de FWH64 para xHarbour64 a especificar en el fichero HBP son estas:

-lFivehx64
-lFiveC64

Re: Compilar con hmbk2 es realmente frustrante

Posted: Sat Sep 14, 2024 4:50 pm
by leandro
Antonio buenas tardes, gracias por responder

Seguí tu instrucciones y bueno ya tenemos un avance, ahora esta devolviendo estos errores:

Code: Select all | Expand

C:\cmplar_64>go64

C:\cmplar_64>set bcc=bcc770_64

C:\cmplar_64>set path=c:\bcc770_64\bin

C:\cmplar_64>set HB_USER_CFLAGS=-Ic:\bcc770_64\INCLUDE\windows\crtl -Ic:\bcc770_64\INCLUDE\windows\sdk -Lc:\bcc770_64\LIB

C:\cmplar_64>set HB_USER_LDFLAGS=-Lc:\bcc770_64\LIB;c:\bcc770_64\LIB\psdk

C:\cmplar_64>C:\xHar2407_64\bin\hbmk2.exe test.hbp -comp=bcc64 -xhb
hbmk2[test]: Warning: Cannot find hbct.hbc (referenced from test.hbp)
hbmk2[test]: Warning: Cannot find xhb.hbc (referenced from test.hbp)
hbmk2[test]: Warning: Cannot find hbziparc.hbc (referenced from test.hbp)
xHarbour 1.3.1 Intl. (SimpLex) (Build 20240624)
Copyright 1999-2024, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'test.prg'...
Generating C source output to 'C:\Users\leandro\AppData\Local\Temp\59\hbmk_cp8rxs.dir\test.c'...
Done.
Lines 9, Functions/Procedures 1, pCodes 18
bcc64.exe: warning: argument unused during compilation: '-Lc:\bcc770_64\LIB' [-Wunused-command-line-argument]
C:\Users\leandro\AppData\Local\Temp\59\hbmk_cp8rxs.dir\test.c:
Turbo Incremental Link64 6.98 Copyright (c) 1997-2023 Embarcadero Technologies, Inc.
Error: Unresolved external 'HB_FUN_CHARONLY' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|vstrfun1.obj
Error: Unresolved external 'HB_FUN_CHARREM' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|vstrfun1.obj
Error: Unresolved external 'HB_FUN_NUMAT' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|menuitem.obj
Error: Unresolved external 'HB_FUN_CHARREPL' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|btnbmp.obj
Error: Unresolved external 'HB_FUN_BEFORATNUM' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|btnbmp.obj
Error: Unresolved external 'HB_FUN_AFTERATNUM' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|btnbmp.obj
Error: Unresolved external 'HB_FUN_EXENAME' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|callstac.obj
Error: Unresolved external 'HB_FUN_TOKEN' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|dbffunc1.obj
Error: Unresolved external 'HB_FUN_TRUENAME' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|adofuncs.obj
Error: Unresolved external 'HB_FUN_OCCURS' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|tarrdata.obj
Error: Unresolved external 'HB_FUN_CHARONE' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|datarow.obj
Error: Unresolved external 'HB_FUN_ADDMONTH' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|tget.obj
Error: Unresolved external 'HB_FUN_TIMEVALID' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|tget.obj
Error: Unresolved external 'HB_FUN_PADRIGHT' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|tget.obj
Error: Unresolved external 'HB_FUN_ATTOKEN' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|pgsuport.obj
Error: Unresolved external 'HB_FUN_HB_GETFILESINZIP' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|olefuncs.obj
Error: Unresolved external 'HB_FUN_HB_UNZIPFILE' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|olefuncs.obj
Error: Unresolved external 'HB_FUN_REMRIGHT' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|drxl.obj
Error: Unresolved external 'HB_FUN_CEILING' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|datarow.obj
Error: Unresolved external 'HB_FUN_BLANK' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|dbcombo.obj
Error: Unresolved external 'HB_FUN_REMALL' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|adofuncs.obj
Error: Unresolved external 'HB_FUN_RANGEREPL' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|adofuncs.obj
Error: Unresolved external 'HB_FUN_REMLEFT' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|adofuncs.obj
Error: Unresolved external 'HB_FUN_POSCHAR' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|xbrowse.obj
Error: Unresolved external 'HB_FUN_PI' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|imgtxtio.obj
Error: Unresolved external 'HB_FUN_SIN' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|imgtxtio.obj
Error: Unresolved external 'HB_FUN_COS' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|imgtxtio.obj
Error: Unresolved external 'HB_FUN_ASCPOS' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|imgtxtio.obj
Error: Unresolved external 'HB_FUN_HB_BASE64DECODE' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|imgtxtio.obj
Error: Unresolved external 'HB_FUN_DTOR' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|imgtxtio.obj
Error: Unresolved external 'HB_FUN_TOKENUPPER' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|valtostr.obj
Error: Unresolved external 'HB_FUN_LOG10' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|valtostr.obj
Error: Unresolved external 'HB_FUN_FLOOR' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|valtostr.obj
Error: Unresolved external 'HB_FUN_NTOCMONTH' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|valtostr.obj
Error: Unresolved external 'HB_FUN_HB_BASE64ENCODE' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|imageb64.obj
Error: Unresolved external 'HB_FUN_POSREPL' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|valtostr.obj
Error: Unresolved external 'HB_FUN_EOM' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|valtostr.obj
Error: Unresolved external 'HB_FUN_TIMETOSEC' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|valtostr.obj
Error: Unresolved external 'HB_FUN_SECTOTIME' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|valtostr.obj
Error: Unresolved external 'HB_FUN_ISLEAP' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|valtostr.obj
Error: Unresolved external 'HB_FUN_CHARMIRR' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|valtostr.obj
Error: Unresolved external 'HB_FUN_CHARSWAP' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|valtostr.obj
Error: Unresolved external 'HB_FUN_NUMTOKEN' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|vstrfun1.obj
Error: Unresolved external 'HB_FUN_DRIVETYPE' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|filename.obj
Error: Unresolved external 'HB_FUN_NETRMTNAME' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|filename.obj
Error: Unresolved external 'HB_FUN_SETFATTR' referenced from C:\FWH64_2407\LIB\FIVEHX64.A|filename.obj
hbmk2[test]: Error: Running linker. 2
ilink64.exe @C:\Users\leandro\AppData\Local\Temp\59\keiinl.lnk

hbmk2: Error: Referenced, missing, but unknown function(s): CHARONLY(),
       CHARREM(), NUMAT(), CHARREPL(), BEFORATNUM(), AFTERATNUM(), EXENAME(),
       TOKEN(), TRUENAME(), OCCURS(), CHARONE(), ADDMONTH(), TIMEVALID(),
       PADRIGHT(), ATTOKEN(), HB_GETFILESINZIP(), HB_UNZIPFILE(), REMRIGHT(),
       CEILING(), BLANK(), REMALL(), RANGEREPL(), REMLEFT(), POSCHAR(), PI(),
       SIN(), COS(), ASCPOS(), HB_BASE64DECODE(), DTOR(), TOKENUPPER(),
       LOG10(), FLOOR(), NTOCMONTH(), HB_BASE64ENCODE(), POSREPL(), EOM(),
       TIMETOSEC(), SECTOTIME(), ISLEAP(), CHARMIRR(), CHARSWAP(), NUMTOKEN(),
       DRIVETYPE(), NETRMTNAME(), SETFATTR()

C:\cmplar_64>

 

Re: Compilar con hmbk2 es realmente frustrante

Posted: Sun Sep 15, 2024 12:16 am
by Cgallegoa
Leandro buenas tardes.

Pudiste utilizar hbmk2 con xHarbour. Otengo el mismo resultado que reportaste.

Re: Compilar con hmbk2 es realmente frustrante

Posted: Sun Sep 15, 2024 4:53 am
by Antonio Linares
Usando este HBP construye el EXE correctamente con xHarbour64:

go64.bat

Code: Select all | Expand

set bcc=bcc7764
set path=c:\%bcc%\bin
set HB_USER_CFLAGS=-Ic:\%bcc%\INCLUDE\windows\crtl -Ic:\%bcc%\INCLUDE\windows\sdk -Lc:\%bcc%\LIB
set HB_USER_LDFLAGS=-Lc:\%bcc%\LIB;c:\%bcc%\LIB\psdk
c:\xharbour64\bin\hbmk2.exe test.hbp -xhb -comp=bcc64
test.hbp

Code: Select all | Expand

-gui

test.prg 

-info
#-traceonly
-workdir=

-optim-
-ldflag+=-aa
-Ic:\fwh64\include
-Lc:\fwh64\lib 

-lFivehx64
-lFiveC64

-lct
-lhbzip
-ltip

Re: Compilar con hmbk2 es realmente frustrante

Posted: Sun Sep 15, 2024 4:47 pm
by leandro
Antonio buenas tardes, gracias como siempre por tu apoyo, hicimos _ que sugeriste.

Aun no lo logramos, pero creo que ya casi, nos devuelve el siguiente mensaje de error

Code: Select all | Expand

C:\cmplar_64>xgo64

C:\cmplar_64>set bcc=bcc770_64

C:\cmplar_64>set path=c:\bcc770_64\bin

C:\cmplar_64>set HB_USER_CFLAGS=-Ic:\bcc770_64\INCLUDE\windows\crtl -Ic:\bcc770_64\INCLUDE\windows\sdk -Lc:\bcc770_64\LIB

C:\cmplar_64>set HB_USER_LDFLAGS=-Lc:\bcc770_64\LIB;c:\bcc770_64\LIB\psdk

C:\cmplar_64>c:\xHar2407_64\bin\hbmk2.exe xhbcmp.hbp -xhb -comp=bcc64
xHarbour 1.3.1 Intl. (SimpLex) (Build 20240624)
Copyright 1999-2024, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'test.prg'...
Generating C source output to 'test.c'...
Done.
Lines 9, Functions/Procedures 1, pCodes 18
bcc64.exe: warning: argument unused during compilation: '-Lc:\bcc770_64\LIB' [-Wunused-command-line-argument]
test.c:
hbmk2: Linking... test.exe
Turbo Incremental Link64 6.98 Copyright (c) 1997-2023 Embarcadero Technologies, Inc.
Fatal: Unable to open file 'C0W64.OBJ'
hbmk2[xhbcmp]: Error: Running linker. 2
ilink64.exe @C:\Users\leandro\AppData\Local\Temp\62\hbb3u8.lnk

C:\cmplar_64>
 

Re: Compilar con hmbk2 es realmente complicado para mi

Posted: Sun Sep 15, 2024 5:07 pm
by alerchster
in your directory from bcc64\lib copy c0w64.o to c0w64.obj

Re: Compilar con hmbk2 es realmente complicado para mi

Posted: Sun Sep 15, 2024 5:14 pm
by Cgallegoa
Hola Leandro, disculpa que me meta en tu hilo :) , pero veo que sigues batallando para usar hbmk2 con xHarbour 64 bits, yo estoy igual. Ya logré compilar un simple prg con un msginfo(), pero al momento de ejecutarlo tengo error "La aplicación no se pudo iniciar correctamente (0x000007b)". Si compilo el mismo ejemplo a 32 bits pasa perfecto.

Ya estamos cerca, a ver si el maestro Antonio nos da otra guía.

La otra opción, es que alguno de los colegas que estén en 64 bits con xHarbour y utilicen "makefile.mak" para procesar con "make.exe" de Borland7764 nos regalen una copia de su makefile. Definitivamente el script "buildx64.bat" se vuelve inmanejable si tienes muchos prgs, libs propias, objs, y más archivos RC, archivos en c o c++. Con makefile todo esto lo puedes manejar mas o menos ordenada y ligiblemente. A falta de un IDE en xHarbour las opciones serían: o hacer funcionar hbmk2 o un archivo make para usar con el Make.exe de Borland, o volverse loco con el Buildx64.bat., a no ser que haya otras opciones y yo las desconozca.

A los avanzados que usen Borland y xHabour 64 a ver si nos dan una pista.

Gracias y un abrazo para todos

Re: Compilar con hmbk2 es realmente complicado para mi

Posted: Sun Sep 15, 2024 5:30 pm
by Cgallegoa
Ya lo logré. Tenia el "manifest" equivocado. Ya compilé mi primer prg con hHarbour64 y Borland7764 usando hbmk2 :D . Ahora, a aprender a usarlo a fondo.

Leando pudiste hacerlo funcionar ? Si aún no lo logras y si quieres, te puedo pasar lo que tengo a ver si te sirve.

Un abrazo,

Re: Compilar con hmbk2 es realmente complicado para mi

Posted: Sun Sep 15, 2024 6:01 pm
by Antonio Linares
Leandro,

Si haces lo que te ha explicado Anton Lerchster te funcionará perfectamente :-)

Re: Compilar con hmbk2 es realmente complicado para mi

Posted: Sun Sep 15, 2024 6:05 pm
by Enrico Maria Giordano
Dear friends, you could get hbmk2 to work but I can tell you that it is internally not compatible with BCC64 yet.

Re: Compilar con hmbk2 es realmente complicado para mi

Posted: Sun Sep 15, 2024 6:09 pm
by Antonio Linares
Enrico Maria Giordano wrote:Dear friends, you could get hbmk2 to work but I can tell you that it is internally not compatible with BCC64 yet.
Dear Enrico,

It is working perfectly!

Re: Compilar con hmbk2 es realmente complicado para mi

Posted: Sun Sep 15, 2024 6:47 pm
by leandro
alerchster wrote:in your directory from bcc64\lib copy c0w64.o to c0w64.obj
Gracias Anton funciono correctamente :D :D
Antonio Linares wrote:Leandro,

Si haces lo que te ha explicado Anton Lerchster te funcionará perfectamente :-)
Si Antonio gracias, ahora vamos a agregar los prg de toda la app, para ver si logramos compilarla en 64bits.

Cualquier cosa comento

Re: Compilar con hmbk2 es complicado, pero.. solucionado

Posted: Sun Sep 15, 2024 7:08 pm
by leandro
Antonio buenas tardes de nuevo yo jejejeje

Dos preguntas?

1- Como le podemos asignar un nombre especifico a nuestro ejecutable final, directo desde el hbmk2?
2- Como hacemos que el exe, se abra de manera automática al final del proceso, solo si fue generado de manera correcta?

Gracias de antemano como siempre.