Page 1 of 1
compiler mismatch con FWH2407
Posted: Mon Sep 23, 2024 6:54 am
by José Luis Sánchez
Buenos días,
al intentar compilar los samples de FWH2407 que se entregó con el webminar me aparecen los siguientes errores. Creo que el error se debe a que el compilador BCC que estoy usando no es el mismo que el que se ha usando para construir Harbour. ?Alguien me puede decir de donde puedo obtener ese compilador? Creo que hay una edición Community de BCC o algo así, ¿de donde se puede descargar?
Si alguien me quiere contactar por privado que lo haga por favor a joseluis.sncz ARROBA gmail PUNTO com
Saludos,
Re: compiler mismatch con FWH2407
Posted: Mon Sep 23, 2024 9:18 am
by Antonio Linares
Estimado Jose Luis,
Tienes que usar este build de Harbour:
https://github.com/FiveTechSoft/harbour ... 240814.zip
Re: compiler mismatch con FWH2407
Posted: Mon Sep 23, 2024 3:46 pm
by José Luis Sánchez
Muchas gracias Antonio, ahora me funciona correctamente.
Saludos,
Re: compiler mismatch con FWH2407
Posted: Mon Sep 23, 2024 7:02 pm
by Verhoven
Buenas tardes Antonio,
Nocesito tu ayuda, estoy teniendo problemas para conseguir construir las aplicaciones con la nueva versión 24.07.
Me arroja los errores siguientes y ya no se como seguir:
Code: Select all | Expand
┌────────────────────────────────────────────────────────────────────────────┐
?FWH 64 for Harbour 24.07 (VS64bits) Jul. 2024 Harbour development power │▄
?(c) FiveTech 1993-2024 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8/10 │█
└────────────────────────────────────────────────────────────────────────────┘?
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀?
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.2.5
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
Compiling...
Harbour 3.2.0dev (r2407221137)
Copyright (c) 1999-2021, https://harbour.github.io/
Compiling 'wges.prg' and generating preprocessed output to 'wges.ppo'...
Lines 62146, Functions/Procedures 689
Generating C source output to 'wges.c'... Done.
Compilador de optimización de C/C++ de Microsoft (R) versión 19.32.31332 para x64
(C) Microsoft Corporation. Todos los derechos reservados.
wges.c
Microsoft (R) Windows (R) Resource Compiler Version 10.0.10011.16384
Copyright (C) Microsoft Corporation. All rights reserved.
wges.obj : error LNK2019: símbolo externo __imp_InternetOpenA sin resolver al que se hace referencia en la función HB_FUN_INTERNETOPEN_2
wges.obj : error LNK2019: símbolo externo __imp_InternetCloseHandle sin resolver al que se hace referencia en la función HB_FUN_INTERNETCLOSEHANDLE_2
wges.obj : error LNK2019: símbolo externo __imp_InternetConnectA sin resolver al que se hace referencia en la función HB_FUN_INTERNETCONNECT_2
wges.obj : error LNK2019: símbolo externo __imp_InternetWriteFile sin resolver al que se hace referencia en la función HB_FUN_INTERNETWRITEFILE_2
wges.obj : error LNK2019: símbolo externo __imp_InternetFindNextFileA sin resolver al que se hace referencia en la función HB_FUN_INTERNETFINDNEXTFILE_2
wges.obj : error LNK2019: símbolo externo __imp_FtpFindFirstFileA sin resolver al que se hace referencia en la función HB_FUN_FTPFINDFIRSTFILE_2
wges.obj : error LNK2019: símbolo externo __imp_FtpOpenFileA sin resolver al que se hace referencia en la función HB_FUN_FTPOPENFILE_2
wges.obj : error LNK2019: símbolo externo __imp_FtpGetFileSize sin resolver al que se hace referencia en la función HB_FUN_FTPGETFILESIZE
wges.exe : fatal error LNK1120: 20 externos sin resolver
* Linking errors *
Parte del código que está dando el fallo es el siguiente:
Code: Select all | Expand
#pragma BEGINDUMP
// Para compilar con Borland BCC582, BCC63 y para VSC2013-2019.
#include "C:\CLIWIN\FW\warningsVSC2013.h" //Elimina los warnings del compilador para la función fopen() de C.
//#include <winsock2.h>
#include <ws2tcpip.h> //For WinSock 2 library: ws2_32.lib //Equivalente actualizado de #include <winsock2.h>
/* #include <ws2ipdef.h> // Por lo visto, demasiado moderna. Con msvc 2019 Mejor seguir usando "ws2tcpip.h" */
#include <wininet.h>
#include <windows.h>
#include <stdio.h>
#include "hbapi.h"
#include "hbapifs.h" //Esta incluye: FILE * hb_fopen( const char * path, const char * mode );
#include "WinBase.h"
#include <iphlpapi.h>
#include <icmpapi.h>
HB_FUNC( INTERNETOPEN_2 )
{
#ifdef __64__ //Opciones para 64 Bits
hb_retnll( ( __int64 ) InternetOpen( hb_parc( 1 ), hb_parnl( 2 ), hb_parc( 3 ), hb_parc( 4 ), hb_parnl( 5 ) ) );
#else
hb_retnl( ( LONG ) InternetOpen( hb_parc( 1 ), hb_parnl( 2 ), hb_parc( 3 ), hb_parc( 4 ), hb_parnl( 5 ) ) );
#endif
}
Para conseguir llegar hasta aquí he tenido que cambiar un par de líneas del buildh64.bat, las líneas comentadas con rem es la original que trae el .bat de FW24.07:
Code: Select all | Expand
rem cl -TC -W3 -O2 -c -I%hdir%\include -D_WIN64 -D__FLAT__ -I%fwdir%\include -I-I"%ProgramFiles(x86)%\Windows Kits"\10\Include\10.0.18362.0\ucrt %1.c
cl -D__64__ -TP -W3 -O2 -c -I%hdir%\include -D_WIN64 -D__FLAT__ -I%fwdir%\include -I"%ProgramFiles(x86)%\Windows Kits"\10\Include\10.0.22621.0\ucrt %1.c
Y el buildh64.bat que trato de utilizar es:
Code: Select all | Expand
@ECHO OFF
CLS
ECHO 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커
ECHO ?FWH 64 for Harbour 24.07 (VS64bits) Jul. 2024 Harbour development power 넵
ECHO ?(c) FiveTech 1993-2024 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8/10 넴
ECHO 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸?
ECHO 賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽賽?
if A%1 == A GOTO :SINTAX
if NOT EXIST %1.prg GOTO :NOEXIST
@set oldpath=%Path%
@set oldinclude=%include%
@set oldlib=%lib%
@set oldlibpath=%libpath%
@set current_dir=%cd%
setlocal
@set path=%path%;C:\harbour_msvc2022_64_20240814\lib\win\msvc64;C:\harbour_msvc2022_64_20240814\include
call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
if "%FWDIR%" == "" set FWDIR=C:\fwh64bis
if "%HBDIR%" == "" set HBDIR=C:\harbour_msvc2022_64_20240814
ECHO Compiling...
set hdir=%HBDIR%
set hdirl=%hdir%\lib\win\msvc64
@cd %current_dir%
rem %hdir%\bin\win\msvc64\harbour %1 /n /i%fwdir%\include;%hdir%\include /w /p /d__64__ %2 %3 > comp.log 2> warnings.log
%hdir%\bin\win\msvc64\harbour %1 /n /i%FWDIR%\include;%hdir%\include /p /d__64__ /d__NODEBUG__ %2 %3 > comp.log 2> warnings.log
IF ERRORLEVEL 1 GOTO COMPILEERROR
@type comp.log
@type warnings.log
rem cl -TC -W3 -O2 -c -I%hdir%\include -D_WIN64 -D__FLAT__ -I%fwdir%\include -I-I"%ProgramFiles(x86)%\Windows Kits"\10\Include\10.0.18362.0\ucrt %1.c
cl -D__64__ -TP -W3 -O2 -c -I%hdir%\include -D_WIN64 -D__FLAT__ -I%fwdir%\include -I"%ProgramFiles(x86)%\Windows Kits"\10\Include\10.0.22621.0\ucrt %1.c
:ENDCOMPILE
IF EXIST %1.rc rc -r -D__64__ %1
echo %1.obj > msvc.tmp
echo %fwdir%\lib\FiveH64.lib %fwdir%\lib\FiveHC64.lib %fwdir%\lib\libmariadb64.lib >> msvc.tmp
rem echo %fwdir%\lib\drxlsx64.lib >> msvc.tmp
rem echo %fwdir%\lib\xlsxlibhbmsvc64.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%\hbvm.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 %hdirl%\hbcomm.lib >> msvc.tmp
echo %hdirl%\hbmxml.lib >> msvc.tmp
echo %hdirl%\mxml.lib >> msvc.tmp
rem Uncomment these two lines to use Advantage RDD
rem echo %hdirl%\rddads.lib >> msvc.tmp
rem echo %hdirl%\ace32.lib >> msvc.tmp
echo kernel32.lib >> msvc.tmp
echo user32.lib >> msvc.tmp
echo gdi32.lib >> msvc.tmp
echo winspool.lib >> msvc.tmp
echo comctl32.lib >> msvc.tmp
echo comdlg32.lib >> msvc.tmp
echo advapi32.lib >> msvc.tmp
echo shell32.lib >> msvc.tmp
echo ole32.lib >> msvc.tmp
echo oleaut32.lib >> msvc.tmp
echo uuid.lib >> msvc.tmp
echo odbc32.lib >> msvc.tmp
echo odbccp32.lib >> msvc.tmp
echo iphlpapi.lib >> msvc.tmp
echo mpr.lib >> msvc.tmp
echo version.lib >> msvc.tmp
echo wsock32.lib >> msvc.tmp
echo msimg32.lib >> msvc.tmp
echo oledlg.lib >> msvc.tmp
echo psapi.lib >> msvc.tmp
echo gdiplus.lib >> msvc.tmp
echo winmm.lib >> msvc.tmp
echo vfw32.lib >> msvc.tmp
echo ws2_32.lib >> msvc.tmp
echo strmiids.lib >> msvc.tmp
echo ucrt.lib >> msvc.tmp
echo UxTheme.lib >> msvc.tmp
IF EXIST %1.res echo %1.res >> msvc.tmp
link @msvc.tmp /nologo /subsystem:windows /NODEFAULTLIB:libucrt /NODEFAULTLIB:msvcrt
rem /force:multiple
IF ERRORLEVEL 1 GOTO LINKERROR
ECHO * Application successfully built *
@set Path=%oldpath%
@set include=%oldinclude%
@set lib=%oldlib%
@set libpath=%oldlibpath%
@set oldpath=""
@set oldinclude=""
@set oldlib=
@set oldlibpath=
endlocal
%1
GOTO EXIT
ECHO
rem delete temporary files
@del %1.c
@del msvc.tmp
:COMPILEERROR
@type comp.log
ECHO * Compiling errors *
GOTO EXIT
:LINKERROR
ECHO * Linking errors *
GOTO EXIT
:SINTAX
ECHO SYNTAX: Build [Program] {-- No especifiques la extensi?n PRG
ECHO {-- Don't specify .PRG extension
GOTO EXIT
:NOEXIST
ECHO The specified PRG %1 does not exist
:EXIT
Re: compiler mismatch con FWH2407
Posted: Mon Sep 23, 2024 7:28 pm
by Enrico Maria Giordano
Enlaza wininet.lib.
Re: compiler mismatch con FWH2407
Posted: Mon Sep 23, 2024 7:37 pm
by Verhoven
Lo encontré, gracias Enrico,
Faltaba una lib que añadir al buildh64.bat:
echo wininet.lib >> msvc.tmp
Solucionado.