FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Como usar el Manifest correcto 32 o 64
Posts: 607
Joined: Mon Mar 04, 2013 04:32 PM
Como usar el Manifest correcto 32 o 64
Posted: Thu May 07, 2026 08:51 AM

Buenos dias:

No puedo compilar la app de 64 bits con el Manifest correcto.
Tengo esto en el archivo .rc
#ifndef 64
1 24 "./WindowsXP.Manifest"
#endif

#ifdef 64
1 24 "./WindowsXP.Manifest64"
#endif

Compilo perfectamente la app para 32 bits ya que por defecto me carga el manifest de 32 bits cuando abro el .rc con Pelles C. Pero no construyo el exe de 64 bits.

¿La comprobacion de 64 donde la realiza ?
¿Tengo que utilizar un .rc diferente para 32 y 64 bits. ?

Como puedo solucionar esto y compilar para 64 bits. sin utilizar otro .rc ?

Saludos

Jose.

Fwh 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Como usar el Manifest correcto 32 o 64
Posted: Thu May 07, 2026 04:59 PM

José, ¿esta pregunta se refiere al archivo \samples o directamente al proyecto? ¿Cómo se compila directamente en el proyecto? Todavía no he podido compilar con código de 64 bits directamente en un proyecto, como CX.BAT y CX.LNK.

¿Tienes algún archivo de ejemplo (demo) con el que pueda probar usando archivos .bat y .lnk?

Gracias, tks.

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 607
Joined: Mon Mar 04, 2013 04:32 PM
Re: Como usar el Manifest correcto 32 o 64
Posted: Thu May 07, 2026 05:51 PM

Hola Joao

Yo compilo perfectamente en 32 y 64 bits uso el MSVC 2022 Community con la ultima version de Harbour y y la de Fivewin es vers. 24.09 pero tambien estoy probando la beta 26.03 todo esto con hbmk2 con ficheros hbp , claro tambien tengo un build.bat personalizado que si quiero compilar en 64 bits no pongo nada pero si quiero que genere 32 bits. utilizo:
build ficherow 32 // Siendo ficherow el archivo .hbp (no es necesario poner la extension pero si la pones no pasa nada.)
build ficherow // Seria simplemente para 64 bits (Por defecto)
y con esto genero exes para 64 de la forma ficherow64.exe y ficherow.exe (siendo fichero el archivo .hbp)
lo de añadir una w al final del nombre es una mania mia, simplemente significa (windows) :lol:

// Build.bat

@echo on
cls

REM -------------------------
REM Validar parámetros
REM -------------------------
IF "%~1"=="" (
   echo Uso: build nombre_proyecto [32^|64]
   goto :eof
)

set NAME=%~n1
set ARCH=%~2

REM Por defecto 64 bits
IF "%ARCH%"=="" set ARCH=64

REM Validar arquitectura
IF /I NOT "%ARCH%"=="32" IF /I NOT "%ARCH%"=="64" (
   echo Arquitectura inválida. Usa 32 o 64
   goto :eof
)

REM -------------------------
REM Configuración según arch
REM -------------------------
IF "%ARCH%"=="64" (
   set HB_PATH=c:\harbour\bin\win\msvc64\hbmk2
   set COMP=msvc64
   set EXE_NAME=%NAME%64
   set VCVARS=vcvars64.bat
) ELSE (
   set HB_PATH=c:\harbour\bin\win\msvc\hbmk2
   set COMP=msvc
   set EXE_NAME=%NAME%
   set VCVARS=vcvars32.bat
)

REM -------------------------
REM Archivo .hbp
REM -------------------------
set FILE=%~1
IF /I NOT "%~x1"==".hbp" (
   set FILE=%~1.hbp
)

cd /d "%~dp1" 2>nul

REM Borrar exe previo
IF exist "%EXE_NAME%.exe" del "%EXE_NAME%.exe"

@setlocal

REM -------------------------
REM Entorno Visual Studio
REM -------------------------
IF "%VS170COMNTOOLS%" == "" (
   call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\%VCVARS%"
)

REM -------------------------
REM Compilar
REM -------------------------
"%HB_PATH%" "%FILE%" -comp=%COMP%

@endlocal

REM Ejecutar si existe
IF exist "%EXE_NAME%.exe" (
"%EXE_NAME%.exe"
) ELSE (
echo Error: no se genero el ejecutable.
)

// ejemplo simple de hbp

# $Id: ficherow.hbp $

#flags
-gui
-inc
-ldflag=/NODEFAULTLIB:msvcrt
-ldflag+=/NODEFAULTLIB:libucrt
#-b
{msvc}-workdir=.\obj
{msvc64}-workdir=.\obj64

#INCLUDES#PRG
# ------ MODULO PRINCIPAL -------
.\source\ficherow.prg

# ------ SOURCES -----------------
.\source\prg1.prg
.\source\prg2.prg
.\source\prg3.prg
.\source\prg4.prg
.\source\prg5.prg
#.\source\etc......

{msvc64}-Ic:\fwh64\include
{msvc}-Ic:\fwh\include

#LIBRERIAS FW
{msvc64}-Lc:\fwh64\lib
{msvc64}-lFiveH64
{msvc64}-lFiveHC64
#{msvc64}-llibmariadb64
{msvc}-Lc:\fwh\lib
{msvc}-lFiveH32
{msvc}-lFiveHC32
#{msvc}-llibmariadb

#LIBRERIAS DE TERCEROS
#{msvc64}-Lc:\fwh_proyectos\Jvchwin\lib64
#{msvc64}-ljvchwin64
#{msvc}-Lc:\fwh_proyectos\Jvchwin\lib
#{msvc}-ljvchwin

-lgdiplus
-lole32
-lOleDlg
-lversion
-lucrt
-luxtheme

#LIBRERIAS HARBOUR (se añaden las cabeceras .hbc)
xhb.hbc
hbct.hbc
hbwin.hbc
hbmzip.hbc
hbziparc.hbc
hbhpdf.hbc
hbcomm.hbc
hbmxml.hbc

#RC
.\resource\*.rc

#NOMBRE DEL FICHERO EXE DE SALIDA:
{msvc64}-oFicherow64
{msvc}-oFicherow

Como puedes comprobar yo utilizo las rutas standard de Harbour y de Fivewin e incluso añado libs propias, esta comentado, solo que sirva
de ejemplo.
Mis subdirectorios en todos los proyectos son
Obj
Obj64
source
resource

automaticamente compile para 32 van los .c y .obj al Obj y si compilo para 64 al Obj64 :-)
en source tengo todos los fuentes.
Y en resource el fichero .rc con el resource.h
tambien tengo una carpeta fija en la raiz del disco C:\Resource y aqui es donde tengo todos los bitmaps , cur, ico que utilizo en todos los proyectos.
cada archivo .rc lee de ahi o sea un repositorio para todos los proyectos (Lo tengo guardado en Google Drive y en Disco duro externo :-)) )

El problema que tengo que al añadir al .rc

#ifdef __FLAT__
   1 24 "..\\..\\fwh64\\Samples\\WinXp\\WindowsXP.Manifest"
#endif

#ifdef __64__
   1 24 "..\\..\\fwh64\\Samples\\WinXp\\WindowsXP.Manifest64"
#endif

Como se puede comprobar la ruta de los manifest es correcta ya que yo estoy en dos subdirectorios por arriba de la raiz de c:\
y es la forma que usa Pelles C para referirse a los archivos con \\
Solo compila bien en 32 bits en 64 bits tengo que utilizar solo esto.

1 24 "WinXP/WindowsXP.Manifest64"

Y funciona perfectmante por supuesto pero necesito dos archivos .rc , no hay problema pero creo que si existe un condicional deberia funcionar bien, a vosotros os funciona bien ?, como lo haceis por favor ?

Saludos

Perdon por la extension del mensaje ya se que todos teneis clarisimo lo de la compilacion, pero es por despejar dudas.

Jose

Fwh 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Como usar el Manifest correcto 32 o 64
Posted: Thu May 07, 2026 05:59 PM

¿Has intentado copiar el MANIFEST -> 1 24 "Windows XP/Windows XP.Manifest 64" directamente a la carpeta del proyecto? Lamentablemente, no uso MSVC, solo BCC.

Gracias, tks.

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Como usar el Manifest correcto 32 o 64
Posted: Thu May 07, 2026 06:27 PM

Estimado José,

Prueba asi:

Añade esta línea a tu fichero .hbp:

{HB_CPU='x86_64'}-rcflag=-D64

ó asi:

{msvc64}-rcflag=-D64

Ojo es: _ _ 64 _ _

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion