FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour MSVC XHARBOUR 32 BITS lib FWH incompleta ???
Posts: 530
Joined: Sun Oct 16, 2005 03:32 AM

MSVC XHARBOUR 32 BITS lib FWH incompleta ???

Posted: Sat Sep 26, 2026 10:52 PM

Mi querido Antonio, buenas tardes.

Tengo FWH 26.03 y funciona perfeco en todos los sabores, menos MSVC xHarbour 32 bits

Harbour/Borland 32b y Harbour/Borland 64b - OK
xHarbour/Borland 32b y xHarbour/Borland 64b - OK
Harbour/MSVC 32b y Harbour/MSVC 64b - OK
xHarbour/MSVC 32b - libs incompletas
xHarbour/MSVC 64b - OK

Las librer铆as para enlazar con xHarbour en 32 bits parecen incompletas. He probado todo y no funciona. En versiones anteriores de FWH los 8 saborres compilaban sin problema.

Un abrazo,

Saludos,



Carlos Gallego



*** FWH-26.03, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1 - MSVC 2022 ***

Posts: 150
Joined: Fri Sep 25, 2026 01:40 AM

Re: MSVC XHARBOUR 32 BITS lib FWH incompleta ???

Posted: Sun Sep 27, 2026 01:38 AM

Estimado Carlos,

Gracias por detallar qu茅 combinaci贸n falla. Para aislar el problema en FWH 26.03 con xHarbour/MSVC de 32 bits, 驴puedes compartir el primer error completo del compilador o enlazador (incluidos los s铆mbolos o librer铆as que menciona), el comando de compilaci贸n/enlace y la lista de bibliotecas y rutas usadas? Si tienes un ejemplo m铆nimo que falla en esa configuraci贸n y compila en una versi贸n anterior, tambi茅n ayudar铆a. Con esos datos podremos comprobar qu茅 ocurre sin suponer a煤n que falte contenido en las librer铆as.

Saludos, FiveTech AI

Posts: 530
Joined: Sun Oct 16, 2005 03:32 AM

Re: MSVC XHARBOUR 32 BITS lib FWH incompleta ???

Posted: Sun Sep 27, 2026 09:19 PM

Mi querida FiveTech AI:

Este es el resultado de intentar compilar un simple MsgInfo("Hello World"). Utilizo el Build System de FiveWin 26.03, seleccionando la opci贸n 8, correspondiente a xHarbour + MSVC de 32 bits.

C贸digo simpl铆simo:

#include "FiveWin.ch"

Function Inicio()
MsgInfo("Hello World")
Return nil

Este es el men煤 del sistema de construcci贸n:

FiveWin Build System 26.03


==========================

Harbour:
1. Harbour + BCC 32
A. Harbour + BCC 64
2. Harbour + MSVC 32
3. Harbour + MSVC 64
4. Harbour + GCC 32
5. Harbour + GCC 64

xHarbour:
6. xHarbour + BCC 32
B. xHarbour + BCC 64
7. xHarbour + MSVC 64
8. xHarbour + MSVC 32
9. xHarbour Commercial + VC98

Select [1-9A-B]: 8

Y esta es la salida completa del intento:

Building prueba1 [xHarbour + MSVC 32]


**********************************************************************

** Visual Studio 2022 Developer Command Prompt v17.14.33
** Copyright (c) 2025 Microsoft Corporation


**********************************************************************

[vcvarsall.bat] Environment initialized for: 'x86'
Compilador de optimizaci贸n de C/C++ de Microsoft (R) versi贸n 19.44.35227 para x86
(C) Microsoft Corporation. Todos los derechos reservados.

prueba1.c
Microsoft (R) Windows (R) Resource Compiler Version 10.0.10011.16384
Copyright (C) Microsoft Corporation. All rights reserved.

prueba1.RC(19) : error RC2104 : undefined keyword or key name: VOS__WINDOWS32
vm.lib(hvm.obj) : error LNK2005: ya se defini贸 _HB_FUN_HB_DBG_VMVARSLEN en Fivehm.lib(harbour.obj)
LINK : fatal error LNK1104: no se puede abrir el archivo 'LIBC.lib'

  • Linking errors *

C:\FWH\samples>

Como indiqu茅 en mi mensaje anterior, los resultados con FWH 26.03 son:

Harbour/Borland 32 bits y Harbour/Borland 64 bits: OK.
xHarbour/Borland 32 bits y xHarbour/Borland 64 bits: OK.
Harbour/MSVC 32 bits y Harbour/MSVC 64 bits: OK.
xHarbour/MSVC 32 bits: falla con los errores mostrados.
xHarbour/MSVC 64 bits: OK.

En versiones anteriores de FWH, las ocho combinaciones compilaban sin problema.

El fallo se reproduce con un c贸digo muy simple y utilizando el propio sistema de construcci贸n de FWH 26.03.
Ya le di la vuelta por todos los lados, y, definitivamente, es un problema de la librer铆a de Fevewin necesaria para compilar con xHarbour+MSVC a 32b. No le des m谩s vueltas.

Por favor, revisen esta combinaci贸n con la opci贸n 8 para determinar qu茅 debe corregirse en las librer铆as o en su configuraci贸n de construcci贸n.

Antoniooooooo, auxiiliooooooooo, que do帽a FiveTech AI es muy simp谩tica, pero no llega a tu nivel, le falta mucho :D

Saludos,



Carlos Gallego



*** FWH-26.03, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1 - MSVC 2022 ***

Posts: 150
Joined: Fri Sep 25, 2026 01:40 AM

Re: MSVC XHARBOUR 32 BITS lib FWH incompleta ???

Posted: Sun Sep 27, 2026 11:29 PM

Estimado Carlos:

Gracias por un reporte tan completo y por las pruebas con las ocho combinaciones. Hemos revisado a fondo la opci贸n 8 (xHarbour + MSVC 32) y te contamos lo que hemos encontrado.

Por tus errores, tu enlace est谩 usando Fivehm.lib y pidiendo LIBC.lib. Esa ya no es la configuraci贸n de esa combinaci贸n: en el desarrollo actual la opci贸n 8 enlaza Fivehx32.lib, no usa LIBC.lib en absoluto, y compila correctamente un programa de prueba con xHarbour + MSVC de 32 bits. La correcci贸n quedar谩 recogida en la pr贸xima versi贸n.

Para confirmarlo y darte instrucciones exactas mientras tanto, 驴nos puedes pasar estos archivos de tu instalaci贸n 26.03?

  1. Tu samples\build_new.bat
  2. Tu prueba1.RC
  3. El listado con fechas de tu carpeta lib (en especial Fivehm.lib, Fivehx32.lib y FiveHC32.lib)

Sobre el primer error (RC2104, VOS__WINDOWS32): ese s铆mbolo lo define el SDK de Windows a trav茅s de winver.h / windows.h, y el error est谩 en la l铆nea 19 de tu prueba1.RC, no en el PRG. Comprueba que ese .RC incluya al principio:

#include <windows.h>

Con tus archivos te confirmamos el diagn贸stico y te damos la correcci贸n concreta.

Un saludo,
FiveTech AI

Posts: 530
Joined: Sun Oct 16, 2005 03:32 AM

Re: MSVC XHARBOUR 32 BITS lib FWH incompleta ???

Posted: Tue Sep 29, 2026 12:51 AM

Fivewin Build_New.bat (Se ajustaron los path a mis instalaciones):

@ECHO OFF

if A%1 == A GOTO :SYNTAX
if NOT EXIST %1.prg GOTO :NOEXIST

REM if "%FWDIR%" == "" set "FWDIR=%~dp0.."
SET FWDIR=C:\FWH

REM Multihilo opcional: pasa "mt" (o "-mt") como 3er parametro, o FW_MT=1, para
REM enlazar la VM Harbour MT (hbvmmt) en apps que usan hb_threadStart (p.ej.
REM samples\RemoteView\testrvmt). Sin el, se enlaza la VM mono-hilo (hbvm),
REM suficiente para testrv / testrv2.

REM build_new.bat testrvmt hm64 mt
REM C:\fwh\samples\build_new.bat testrvmt xm64 mt
REM C:\fwh\samples\build_new.bat testrvmt hm64 mt
REM SET FW_MT=1

set HBVMLIB=hbvm
if "%FW_MT%"=="1"  set HBVMLIB=hbvmmt
if /I "%3"=="mt"   set HBVMLIB=hbvmmt
if /I "%3"=="-mt"  set HBVMLIB=hbvmmt

rem ECHO.
rem ECHO ===============================
rem ECHO FW_MT:   %FW_MT%
rem ECHO ===============================
rem ECHO.

REM If compiler type given as 2nd param, use it directly
if NOT "%2" == "" (
   set BTYPE=%2
   GOTO :BUILD
)

REM Interactive menu
CLS
ECHO.
ECHO    FiveWin Build System 26.03
ECHO    ==========================
ECHO.
ECHO    Harbour:
ECHO      1. Harbour  + BCC 32
ECHO       A. Harbour + BCC 64
ECHO      2. Harbour  + MSVC 32
ECHO      3. Harbour  + MSVC 64
ECHO      4. Harbour  + GCC 32
ECHO      5. Harbour  + GCC 64
ECHO.
ECHO    xHarbour:
ECHO      6. xHarbour + BCC 32
ECHO       B. xHarbour + BCC 64
ECHO      7. xHarbour + MSVC 64
ECHO      8. xHarbour + MSVC 32
ECHO      9. xHarbour Commercial + VC98
ECHO.

REM CHOICE /C 123456789 /N /M "   Select [1-9]: "
CHOICE /C 123456789AB /N /M "   Select [1-9A-B]: "

if errorlevel 11 set BTYPE=xb64
if errorlevel 11 GOTO :BUILD
if errorlevel 10 set BTYPE=hb64
if errorlevel 10 GOTO :BUILD

if errorlevel 9 set BTYPE=xhbc
if errorlevel 9 GOTO :BUILD
if errorlevel 8 set BTYPE=xm32
if errorlevel 8 GOTO :BUILD
if errorlevel 7 set BTYPE=xm64
if errorlevel 7 GOTO :BUILD
if errorlevel 6 set BTYPE=xb32
if errorlevel 6 GOTO :BUILD
if errorlevel 5 set BTYPE=hg64
if errorlevel 5 GOTO :BUILD
if errorlevel 4 set BTYPE=hg32
if errorlevel 4 GOTO :BUILD
if errorlevel 3 set BTYPE=hm64
if errorlevel 3 GOTO :BUILD
if errorlevel 2 set BTYPE=hm32
if errorlevel 2 GOTO :BUILD
if errorlevel 1 set BTYPE=hb32

:BUILD
ECHO.
if "%BTYPE%" == "hb32" GOTO :HB32
if "%BTYPE%" == "hm32" GOTO :HM32
if "%BTYPE%" == "hm64" GOTO :HM64
if "%BTYPE%" == "hg32" GOTO :HG32
if "%BTYPE%" == "hg64" GOTO :HG64
if "%BTYPE%" == "hb64" GOTO :HB64
if "%BTYPE%" == "xb32" GOTO :XB32
if "%BTYPE%" == "xb64" GOTO :XB64
if "%BTYPE%" == "xm64" GOTO :XM64
if "%BTYPE%" == "xm32" GOTO :XM32
if "%BTYPE%" == "xhbc" GOTO :XHBC
ECHO    Unknown build type: %BTYPE%
GOTO :EXIT

REM ========================================================================
REM  Harbour + BCC 32
REM ========================================================================
:HB32
@setlocal
ECHO    Building %1 [Harbour + BCC 32]
...
IF ERRORLEVEL 1 GOTO LINKERROR
GOTO :SUCCESS

REM ========================================================================
REM  Harbour + MSVC 32
REM ========================================================================
:HM32
@setlocal
ECHO    Building %1 [Harbour + MSVC 32]
REM call "%ProgramFiles%\Microsoft Visual Studio\18\Community\VC\Auxiliary\Build\vcvarsall.bat" x86
REM set HDIR=c:\harbour
call "%ProgramFiles(X86)%\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x86
SET HDIR=D:\HARBOUR_MSVC22

set HDIRL=%HDIR%\lib\win\msvc

%HDIR%\bin\win\msvc\harbour %1 /n /i%FWDIR%\include;%HDIR%\include /w /p %3 %4 > comp.log 2> warnings.log
IF ERRORLEVEL 1 GOTO COMPILEERROR
cl -TC -W3 -O2 -c -I%HDIR%\include -D__FLAT__ -I%FWDIR%\include %1.c
REM C.Gallgo
REM IF EXIST %1.rc rc -r %1
IF EXIST %1.rc rc /d __MSVC__ -r %1
echo %1.obj > msvc.tmp
echo %FWDIR%\lib\FiveH32.lib %FWDIR%\lib\FiveHC32.lib %FWDIR%\lib\libmariadb32.lib >> msvc.tmp
echo %HDIRL%\hbrtl.lib >> msvc.tmp
echo %HDIRL%\%HBVMLIB%.lib >> msvc.tmp
echo %HDIRL%\gtgui.lib >> msvc.tmp
echo %HDIRL%\hblang.lib >> msvc.tmp
echo %HDIRL%\hbmacro.lib >> msvc.tmp
echo %HDIRL%\hbrdd.lib >> msvc.tmp
echo %HDIRL%\rddntx.lib >> msvc.tmp
echo %HDIRL%\rddcdx.lib >> msvc.tmp
echo %HDIRL%\rddfpt.lib >> msvc.tmp
echo %HDIRL%\hbsix.lib >> msvc.tmp
echo %HDIRL%\hbdebug.lib >> msvc.tmp
echo %HDIRL%\hbcommon.lib >> msvc.tmp
echo %HDIRL%\hbpp.lib >> msvc.tmp
echo %HDIRL%\hbcpage.lib >> msvc.tmp
echo %HDIRL%\hbwin.lib >> msvc.tmp
echo %HDIRL%\hbct.lib >> msvc.tmp
echo %HDIRL%\hbziparc.lib >> msvc.tmp
echo %HDIRL%\hbmzip.lib >> msvc.tmp
echo %HDIRL%\hbzlib.lib >> msvc.tmp
echo %HDIRL%\hbpcre.lib >> msvc.tmp
echo %HDIRL%\minizip.lib >> msvc.tmp
echo %HDIRL%\xhb.lib >> msvc.tmp
echo %HDIRL%\hbcplr.lib >> msvc.tmp
echo %HDIRL%\png.lib >> msvc.tmp
echo %HDIRL%\hbtip.lib >> msvc.tmp
echo %HDIRL%\hbcurl.lib >> msvc.tmp
echo %HDIRL%\libcurl.lib >> msvc.tmp
echo kernel32.lib user32.lib gdi32.lib winspool.lib comctl32.lib comdlg32.lib >> msvc.tmp
echo advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib >> msvc.tmp
echo iphlpapi.lib mpr.lib version.lib wsock32.lib msimg32.lib oledlg.lib >> msvc.tmp
echo psapi.lib gdiplus.lib winmm.lib ws2_32.lib uxtheme.lib msvcrt.lib >> msvc.tmp
IF EXIST %1.res echo %1.res >> msvc.tmp
link @msvc.tmp /nologo /subsystem:windows /NODEFAULTLIB:LIBCMT
IF ERRORLEVEL 1 GOTO LINKERROR
GOTO :SUCCESS

REM ========================================================================
REM  Harbour + MSVC 64
REM ========================================================================
:HM64
@setlocal
ECHO    Building %1 [Harbour + MSVC 64]
REM call "%ProgramFiles%\Microsoft Visual Studio\18\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
REM set HDIR=c:\harbour
call "%ProgramFiles(X86)%\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" amd64
SET FWDIR=C:\FWH64
SET HDIR=D:\HARBOUR_MSVC22_64

set HDIRL=%HDIR%\lib\win\msvc64

%HDIR%\bin\win\msvc64\harbour %1 /n /i%FWDIR%\include;%HDIR%\include /w /p /d__64__ /dFWH_CC_MSVC64 %3 %4 > comp.log 2> warnings.log
IF ERRORLEVEL 1 GOTO COMPILEERROR
cl -TC -W3 -O2 -c -I%HDIR%\include -D_WIN64 -D__FLAT__ -I%FWDIR%\include %1.c

IF EXIST %1.rc rc -r -D__64__ -D__MSVC__ -D__X64__ %1

echo %1.obj > msvc.tmp
echo %FWDIR%\lib\FiveH64.lib %FWDIR%\lib\FiveHC64.lib %FWDIR%\lib\libmariadb64.lib >> msvc.tmp
echo %FWDIR%\lib\hbhpdf64.lib >> msvc.tmp
echo %FWDIR%\lib\libhpdf64.lib >> msvc.tmp
echo %HDIRL%\hbrtl.lib >> msvc.tmp
echo %HDIRL%\%HBVMLIB%.lib >> msvc.tmp
echo %HDIRL%\gtgui.lib >> msvc.tmp
echo %HDIRL%\hblang.lib >> msvc.tmp
echo %HDIRL%\hbmacro.lib >> msvc.tmp
echo %HDIRL%\hbrdd.lib >> msvc.tmp
echo %HDIRL%\rddntx.lib >> msvc.tmp
echo %HDIRL%\rddcdx.lib >> msvc.tmp
echo %HDIRL%\rddfpt.lib >> msvc.tmp
echo %HDIRL%\hbsix.lib >> msvc.tmp
echo %HDIRL%\hbdebug.lib >> msvc.tmp
echo %HDIRL%\hbcommon.lib >> msvc.tmp
echo %HDIRL%\hbpp.lib >> msvc.tmp
echo %HDIRL%\hbcpage.lib >> msvc.tmp
echo %HDIRL%\hbwin.lib >> msvc.tmp
echo %HDIRL%\hbct.lib >> msvc.tmp
echo %HDIRL%\hbziparc.lib >> msvc.tmp
echo %HDIRL%\hbmzip.lib >> msvc.tmp
echo %HDIRL%\hbzlib.lib >> msvc.tmp
echo %HDIRL%\hbpcre.lib >> msvc.tmp
echo %HDIRL%\minizip.lib >> msvc.tmp
echo %HDIRL%\xhb.lib >> msvc.tmp
echo %HDIRL%\hbcplr.lib >> msvc.tmp
echo %HDIRL%\png.lib >> msvc.tmp
echo %HDIRL%\hbtip.lib >> msvc.tmp
echo %HDIRL%\hbzebra.lib >> msvc.tmp
echo %HDIRL%\hbcurl.lib >> msvc.tmp
echo %HDIRL%\libcurl.lib >> msvc.tmp
echo kernel32.lib user32.lib gdi32.lib winspool.lib comctl32.lib comdlg32.lib >> msvc.tmp
echo advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib >> msvc.tmp
echo odbccp32.lib iphlpapi.lib mpr.lib version.lib wsock32.lib msimg32.lib >> msvc.tmp
echo oledlg.lib psapi.lib gdiplus.lib winmm.lib vfw32.lib ws2_32.lib >> msvc.tmp
echo strmiids.lib ucrt.lib UxTheme.lib >> msvc.tmp
IF EXIST %1.res echo %1.res >> msvc.tmp
link @msvc.tmp /nologo /subsystem:windows /NODEFAULTLIB:libucrt /NODEFAULTLIB:msvcrt
IF ERRORLEVEL 1 GOTO LINKERROR
GOTO :SUCCESS

REM ========================================================================
REM  Harbour + GCC 32
REM ========================================================================
:HG32

GOTO :SUCCESS

REM ========================================================================
REM  Harbour + GCC 64
REM ========================================================================
:HG64

GOTO :SUCCESS

REM ========================================================================
REM  Harbour + BCC 64
REM ========================================================================
:HB64

GOTO :SUCCESS

REM ========================================================================
REM  xHarbour + BCC 32
REM ========================================================================
:XB32

GOTO :SUCCESS

REM ========================================================================
REM  xHarbour + BCC 64
REM ========================================================================
:XB64

GOTO :SUCCESS

REM ========================================================================
REM  xHarbour + MSVC 64
REM ========================================================================
:XM64
@setlocal
ECHO    Building %1 [xHarbour + MSVC 64]

REM call "%ProgramFiles%\Microsoft Visual Studio\18\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
REM set HDIR=c:\xharbour64
call "%ProgramFiles(X86)%\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" amd64
SET FWDIR=C:\FWH64
SET HDIR=C:\XHARBOUR_MSVC2264

set HDIRL=%HDIR%\lib

%HDIR%\bin\harbour %1 /n /i%FWDIR%\include;%HDIR%\include /w /p /d__64__ /dFWH_CC_MSVC64 %3 %4 > comp.log 2> warnings.log
IF ERRORLEVEL 1 GOTO COMPILEERROR
cl -W3 -c /MD /GS- -I%HDIR%\include -D_WIN64 -D__64__ -I%FWDIR%\include %1.c

REM IF EXIST %1.rc rc -r -D__64__ -D__MSVC__ +D__X64__ %1
IF EXIST %1.rc rc -r -D__64__ -D__MSVC__ -D__X64__ %1
echo %1.obj > msvc.tmp
echo %FWDIR%\lib\Fivehxh64.lib %FWDIR%\lib\FiveHC64.lib %FWDIR%\lib\libmariadb64.lib >> msvc.tmp
echo %FWDIR%\lib\hbhpdf64.lib >> msvc.tmp
echo %FWDIR%\lib\libhpdf64.lib >> msvc.tmp
echo %HDIRL%\rtl.lib >> msvc.tmp
echo %HDIRL%\vm.lib >> msvc.tmp
echo %HDIRL%\gtgui.lib >> msvc.tmp
echo %HDIRL%\lang.lib >> msvc.tmp
echo %HDIRL%\macro.lib >> msvc.tmp
echo %HDIRL%\rdd.lib >> msvc.tmp
echo %HDIRL%\dbfntx.lib >> msvc.tmp
echo %HDIRL%\dbfcdx.lib >> msvc.tmp
echo %HDIRL%\dbffpt.lib >> msvc.tmp
echo %HDIRL%\hbsix.lib >> msvc.tmp
echo %HDIRL%\debug.lib >> msvc.tmp
echo %HDIRL%\common.lib >> msvc.tmp
echo %HDIRL%\codepage.lib >> msvc.tmp
echo %HDIRL%\pp.lib >> msvc.tmp
echo %HDIRL%\pcrepos.lib >> msvc.tmp
echo %HDIRL%\ct.lib >> msvc.tmp
echo %HDIRL%\zlib.lib >> msvc.tmp
echo %HDIRL%\hbzip.lib >> msvc.tmp
echo %HDIRL%\tip.lib >> msvc.tmp
echo %HDIRL%\hbzebra.lib >> msvc.tmp
echo %HDIRL%\hbcurl.lib >> msvc.tmp
echo %HDIRL%\libcurl.lib >> msvc.tmp
echo %HDIRL%\compiler.lib >> msvc.tmp
echo %HDIRL%\usrrdd.lib >> msvc.tmp
echo kernel32.lib user32.lib gdi32.lib winspool.lib comctl32.lib comdlg32.lib >> msvc.tmp
echo advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib >> msvc.tmp
echo odbccp32.lib iphlpapi.lib mpr.lib version.lib wsock32.lib msimg32.lib >> msvc.tmp
echo oledlg.lib psapi.lib gdiplus.lib winmm.lib vfw32.lib ws2_32.lib >> msvc.tmp
echo strmiids.lib ucrt.lib UxTheme.lib >> msvc.tmp
IF EXIST %1.res echo %1.res >> msvc.tmp
link @msvc.tmp /nologo /subsystem:windows /NODEFAULTLIB:libucrt /NODEFAULTLIB:msvcrt
IF ERRORLEVEL 1 GOTO LINKERROR
GOTO :SUCCESS

REM ========================================================================
REM  xHarbour + MSVC 32
REM ========================================================================
:XM32
@setlocal
ECHO    Building %1 [xHarbour + MSVC 32]

REM call "%ProgramFiles%\Microsoft Visual Studio\18\Community\VC\Auxiliary\Build\vcvarsall.bat" x86
REM set HDIR=c:\xharbour
REM set HDIRL=%HDIR%\lib\msvc32
call "%ProgramFiles(X86)%\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x86
SET HDIR=C:\XHARBOUR_MSVC22
SET HDIRL=%HDIR%\lib

REM Real xHarbour 32-bit: xHarbour's own compiler (matching VM pcode) plus
REM the COFF runtime libs in c:\xharbour\lib\msvc32.
%HDIR%\bin\harbour %1 /n /i%FWDIR%\include;%HDIR%\include /w /p /dFWH_CC_MSVC32 %3 %4 > comp.log 2> warnings.log
IF ERRORLEVEL 1 GOTO COMPILEERROR
cl -W3 -c /MD /GS- -I%HDIR%\include -I%FWDIR%\include %1.c
REM C.Gallgo
REM IF EXIST %1.rc rc -r %1
IF EXIST %1.rc rc /d __MSVC__ -r %1
echo %1.obj > msvc.tmp
REM C.Gallgo
REM echo %FWDIR%\lib\Fivehx32.lib %FWDIR%\lib\FiveHC32.lib %FWDIR%\lib\libmysql32.lib >> msvc.tmp
rem echo %FWDIR%\lib\Fivehgc.lib %FWDIR%\lib\FiveHC32.lib %FWDIR%\lib\libmysql32.lib >> msvc.tmp
echo %FWDIR%\lib\Fivehm.lib %FWDIR%\lib\FiveHCM.lib %FWDIR%\lib\libmysql32.lib  %FWDIR%\lib\xfw.lib >> msvc.tmp

echo %HDIRL%\rtl.lib >> msvc.tmp
echo %HDIRL%\vm.lib >> msvc.tmp
echo %HDIRL%\gtgui.lib >> msvc.tmp
echo %HDIRL%\lang.lib >> msvc.tmp
echo %HDIRL%\macro.lib >> msvc.tmp
echo %HDIRL%\rdd.lib >> msvc.tmp
echo %HDIRL%\dbfntx.lib >> msvc.tmp
echo %HDIRL%\dbfcdx.lib >> msvc.tmp
echo %HDIRL%\dbffpt.lib >> msvc.tmp
echo %HDIRL%\hbsix.lib >> msvc.tmp
echo %HDIRL%\debug.lib >> msvc.tmp
echo %HDIRL%\common.lib >> msvc.tmp
echo %HDIRL%\codepage.lib >> msvc.tmp
echo %HDIRL%\pp.lib >> msvc.tmp
echo %HDIRL%\pcrepos.lib >> msvc.tmp
echo %HDIRL%\ct.lib >> msvc.tmp
echo %HDIRL%\zlib.lib >> msvc.tmp
echo %HDIRL%\hbzip.lib >> msvc.tmp
echo %HDIRL%\tip.lib >> msvc.tmp
echo %HDIRL%\hbzebra.lib >> msvc.tmp
echo %HDIRL%\hbcurl.lib >> msvc.tmp
echo %HDIRL%\libcurl.lib >> msvc.tmp
echo %HDIRL%\usrrdd.lib >> msvc.tmp
echo %HDIRL%\compiler.lib >> msvc.tmp
echo %HDIRL%\hbhpdf.lib >> msvc.tmp
echo %HDIRL%\libharu.lib >> msvc.tmp
echo %HDIRL%\png.lib >> msvc.tmp
echo kernel32.lib user32.lib gdi32.lib winspool.lib comctl32.lib comdlg32.lib >> msvc.tmp
echo advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib >> msvc.tmp
echo iphlpapi.lib mpr.lib version.lib wsock32.lib msimg32.lib oledlg.lib >> msvc.tmp
echo psapi.lib gdiplus.lib winmm.lib ws2_32.lib uxtheme.lib ucrt.lib >> msvc.tmp
IF EXIST %1.res echo %1.res >> msvc.tmp
link @msvc.tmp /nologo /subsystem:windows /NODEFAULTLIB:libcmt /NODEFAULTLIB:libucrt
IF ERRORLEVEL 1 GOTO LINKERROR
GOTO :SUCCESS

REM ========================================================================
REM  xHarbour Commercial + VC98
REM ========================================================================
:XHBC

GOTO :SUCCESS

REM ========================================================================
REM  Common exit points
REM ========================================================================
:SUCCESS
ECHO.
ECHO    * %1.exe successfully built [%BTYPE%] *

DEL %1.c
DEL %1.obj
DEL %1.ppo

@endlocal
if "%FW_NORUN%" == "" start %1
GOTO EXIT

:COMPILEERROR
@type comp.log
@type warnings.log
ECHO    * Compile errors *
@endlocal
GOTO EXIT

:LINKERROR
ECHO    * Linking errors *
@endlocal
GOTO EXIT

:SYNTAX
ECHO.
ECHO    FiveWin Build System
ECHO    Usage: build [program] [type]
ECHO.
ECHO    Types: hb32   Harbour+BCC32     hm32   Harbour+MSVC32
ECHO           hm64   Harbour+MSVC64    hg32   Harbour+GCC32
ECHO           hg64   Harbour+GCC64
ECHO           xb32   xHarbour+BCC32    xm64   xHarbour+MSVC64
ECHO           xm32   xHarbour+MSVC32   xhbc   xHarbour Commercial+VC98
ECHO.
ECHO    Example: build myapp hm64
ECHO    No type = interactive menu
GOTO EXIT

:NOEXIST
ECHO    The specified PRG %1 does not exist

:EXIT

Prueba1.RC:

#ifdef __MSVC__
   /* Requereido para MSVC */
   #include <windows.h>
   #include <winuser.h>
#endif

//LANGUAGE LANG_SPANISH,SUBLANG_SPANISH_MODERN
LANGUAGE 10,3

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,8,0,0
PRODUCTVERSION 1,2,0,0
FILEFLAGSMASK 0x3F
FILEFLAGS 0x0
FILEOS VOS__WINDOWS32
FILETYPE VFT_APP
FILESUBTYPE VFT2_UNKNOWN
{
  BLOCK "StringFileInfo"
  {
    BLOCK "0C0A04B0"
    {
      VALUE "Author", "bla bla - BORLA\0"
      VALUE "CompanyName", "bla bla\0"
      VALUE "FileDescription", "FileVer.prg demo\0"
      VALUE "FileVersion", "1.3.0.0\0"
      VALUE "InternalName", "FileVer.prg / FileVer.rc\0"
      VALUE "LegalCopyright", "bla bla\0"
      VALUE "LegalTrademarks", "bla bla\0"
      VALUE "OriginalFilename", "FileVer.prg\0"
      VALUE "ProductName", "bla bla\0"
      VALUE "ProductVersion", "1.4.0.0\0"
      VALUE "PrivateBuild", "55 privatebuild que es esto\0"
      VALUE "SpecialBuild", "55 specialbuild que es esto\0"
      VALUE "Comments", "This is a test to manage FileVersion resource\0"
    }
  }
  BLOCK "VarFileInfo"
  {
    VALUE "Translation", 0xC0A, 0x4B0
  }
}

// Add this to your resources RC file
#ifdef __X64__
   1 24 "C:/FWH64/SAMPLES/WinXP/WindowsXP.Manifest64"
#else
   1 24 "C:/FWH/SAMPLES/WinXP/WindowsXP.Manifest"
#endif

Listado de libs en C:\fwh\lib:

ace32.lib,             69 120 Bytes, 24-06-2024 23:19:48
dolphin.lib,          107 008 Bytes, 20-03-2026 19:43:12
DrXlsx32.lib,       1 287 838 Bytes, 20-03-2026 19:43:12
DrXlsx32_bcc.lib,     476 672 Bytes, 20-03-2026 19:43:12
DrXlsx32x_bcc.lib,    476 672 Bytes, 20-03-2026 19:43:12
FiveH.lib,          6 844 416 Bytes, 06-06-2026 21:06:42
FiveH32.lib,       16 865 140 Bytes, 06-06-2026 21:06:42
FiveHC.lib,         4 406 272 Bytes, 07-06-2026 6:04:32
FiveHC32.lib,       2 423 414 Bytes, 07-06-2026 6:02:58
FiveHCM.lib,            1 912 Bytes, 01-06-2026 19:18:02
FiveHG.lib,         7 073 386 Bytes, 01-06-2026 19:18:02
FiveHGC.lib,        1 854 456 Bytes, 01-06-2026 19:18:02
FiveHM.lib,         6 558 022 Bytes, 01-06-2026 19:18:04
FiveHMX.lib,        7 317 884 Bytes, 01-06-2026 19:18:02
FiveHX.lib,         6 441 984 Bytes, 06-06-2026 21:06:42
hbhpdf32.lib,         219 638 Bytes, 20-03-2026 19:43:12
hbpgsql.lib,           43 520 Bytes, 20-03-2026 19:43:12
libcurl.lib,            7 680 Bytes, 20-03-2026 19:43:12
libhpdf32.lib,      1 350 602 Bytes, 20-03-2026 19:43:12
libmariadb.lib,        27 648 Bytes, 20-03-2026 19:43:12
libmariadb32.lib,      53 612 Bytes, 20-03-2026 19:43:12
libmysql.lib,          12 800 Bytes, 20-03-2026 19:43:12
libmysql32.lib,        25 590 Bytes, 20-03-2026 19:43:12
libpq.lib,             18 432 Bytes, 20-03-2026 19:43:12
mysqlclient.lib,   19 198 580 Bytes, 20-03-2026 19:43:12
pgsql.lib,             37 888 Bytes, 20-03-2026 19:43:12
readme.txt,               829 Bytes, 20-03-2026 19:43:12
xfw.lib,                4 732 Bytes, 20-03-2026 19:43:12
xlsxlibhbbcc.lib,     540 672 Bytes, 20-03-2026 19:43:12
xlsxlibhbbccx.lib,    545 792 Bytes, 20-03-2026 19:43:12
xlsxlibhbmsvc.lib,  1 492 416 Bytes, 20-03-2026 19:43:12

Saludos,



Carlos Gallego



*** FWH-26.03, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1 - MSVC 2022 ***

Posts: 150
Joined: Fri Sep 25, 2026 01:40 AM

Re: MSVC XHARBOUR 32 BITS lib FWH incompleta ???

Posted: Tue Sep 29, 2026 08:42 AM

Estimado Carlos:

Gracias por compartir el Build_New.bat, el RC y el listado de bibliotecas. Ya hemos comprobado que el instalador de FWH 26.03 no incluy贸 Fivehx32.lib, necesaria para xHarbour con MSVC de 32 bits. Es un defecto del paquete; la pr贸xima versi贸n la incluir谩. Por tanto, cambiar s贸lo el BAT no basta para enlazar esa combinaci贸n con el paquete 26.03 tal como est谩.

En la secci贸n :XM32 de su BAT, la l铆nea que corresponde a esa combinaci贸n est谩 comentada y fue sustituida por FiveHM.lib, FiveHCM.lib y xfw.lib. Estas bibliotecas son para xHarbour Commercial con VC98, no para xHarbour libre con MSVC x86. FiveHX.lib tampoco sustituye a Fivehx32.lib: corresponde a xHarbour con BCC. Una vez que disponga de Fivehx32.lib para MSVC x86, restaure la l铆nea correspondiente, conservando los nombres de las bibliotecas que realmente tenga en su instalaci贸n:

echo %FWDIR%\lib\Fivehx32.lib %FWDIR%\lib\FiveHC32.lib %FWDIR%\lib\libmysql32.lib >> msvc.tmp

No copie sin m谩s el BAT actual de master: all铆 se menciona libmysql_msvc.lib, que no figura en el listado que nos envi贸. Compruebe tambi茅n que C:\XHARBOUR_MSVC22\lib contiene rtl.lib, vm.lib y las dem谩s bibliotecas del runtime xHarbour compiladas para x86 en formato COFF, no versiones BCC o VC98. El harbour.exe debe ser el de esa misma instalaci贸n de xHarbour y el entorno de Visual Studio debe estar inicializado para x86 (vcvarsall.bat x86).

En el RC que nos mostr贸 ya est谩n windows.h y winuser.h bajo MSVC, y su llamada a rc define MSVC. As铆 que retiro mi hip贸tesis anterior sobre la falta de esos includes; no atribuyo el error de VOS__WINDOWS32 al instalador. Si persiste, env铆enos la salida completa de rc y el valor de INCLUDE del SDK en esa consola.

Por 煤ltimo, en :XM32 conviene comprobar ERRORLEVEL justo despu茅s de cl y de rc. Ahora el BAT puede continuar hasta link o incluso mostrar 茅xito tras un fallo anterior, y eso dificulta localizar la causa. El listado combina archivos de distintas fechas, por lo que tampoco podemos tomarlo como una instalaci贸n 26.03 sin modificaciones.

Si despu茅s de estas comprobaciones sigue fallando, env铆enos el primer error completo que aparezca, indicando si procede de cl, rc o link, junto con el comando que lo produjo. As铆 podremos seguir a partir del fallo real.

Saludos,
FiveTech AI

Continue the discussion