Migrar a Harbour - Errores del compilador

User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Migrar a Harbour - Errores del compilador

Post by Antonio Linares »

Comprueba que tengas stdarg.h en c:\bcc582\include
regards, saludos

Antonio Linares
www.fivetechsoft.com
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrar a Harbour - Errores del compilador

Post by Verhoven »

Si. Lo tengo igual:

bcc32:
-I"c:\bcc582\include;c:\bcc582\include\dinkumware"
-L"c:\bcc582\lib;c:\bcc582\lib\psdk"

ilink:
-L"c:\bcc582\lib;c:\bcc582\lib\psdk"
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Migrar a Harbour - Errores del compilador

Post by Antonio Linares »

regards, saludos

Antonio Linares
www.fivetechsoft.com
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrar a Harbour - Errores del compilador

Post by Verhoven »

Está en ese directorio.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Migrar a Harbour - Errores del compilador

Post by Antonio Linares »

Pues debería encontrarlo...

te da algun otro error antes de ese ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrar a Harbour - Errores del compilador

Post by Verhoven »

No. No me da ningún error antes de este.
La secuencia de mensajes de este post contiene la migración de xHarbour (que la compila bien) a Harbour. De modo que lo que se ve es como estamos corrigiendo los errores nuevos según se van superando los anteriores.
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrar a Harbour - Errores del compilador

Post by Verhoven »

Apunto el mensaje completo que arroja el compilador:

c:\harbour\include\hbdefs.h(52) Error F0029 can´t open #include file 'stdarg.h'
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrar a Harbour - Errores del compilador

Post by Verhoven »

Antonio, puedes probar a compilar este simple código con la última versión del buildh.bat que se descarga con la instalación de FW.:
Esto da el error que he reseñado más arriba con stdarg.h:

Code: Select all

    #include "FiveWin.ch"
    #include <hbapiitm.h>   //Necesario para HARBOUR

    FUNCTION Main()

        ? "hola"

    RETURN NIL
Y este es el buildh.bat que utilizo:

Code: Select all

@ECHO OFF
CLS
ECHO ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ECHO ³ FiveWin for Harbour 14.11 - Nov.  2014          Harbour development power  ³Ü
ECHO ³ (c) FiveTech, 1993-2014   for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8 ³Û
ECHO ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ
ECHO ÿ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

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

if "%FWDIR%" == "" set FWDIR=C:\fwh
if "%HBDIR%" == "" set HBDIR=c:\harbour
rem if "%2" == "/b" set GT=gtwin
rem if not "%2" == "/b" set GT=gtgui
set GT=gtgui

ECHO Compiling...

set hdir=%HBDIR%
set hdirl=%hdir%\lib
set fwh=%FWDIR%
if exist c:\bcc582 set bcdir=c:\bcc582
if exist c:\bcc64 set bcdir=c:\bcc64

%hdir%\bin\harbour %1 /n /i%fwh%\include;%hdir%\include /p %2 %3 > comp.log 2> warnings.log
if errorlevel 1 goto COMPILEERRORS
@type comp.log
@type warnings.log

echo -O2 -e%1.exe -I%hdir%\include -I%bcdir%\include %1.c > b32.bc
%bcdir%\bin\bcc32 -M -c -w-aus @b32.bc
:ENDCOMPILE

IF EXIST %1.rc %bcdir%\bin\brc32 -r -I%bcdir%\include -I%bcdir%\include\windows\sdk %1
rem IF EXIST %1.rc %vcdir%\bin\rc -r -d__FLAT__ %1

echo %bcdir%\lib\c0w32.obj + > b32.bc
echo %1.obj, + >> b32.bc
echo %1.exe, + >> b32.bc
echo %1.map, + >> b32.bc

rem ­ Hay que poner delante las que sustituyen a las de FW, o mejor dicho
rem    el enlazador pone en el exe las que primero encuentra !
echo C:\CLIWIN\TBROWSE17b\LIB\TWBRWX32_H.lib + >> b32.bc

echo %fwh%\lib\FiveH.lib %fwh%\lib\FiveHC.lib %fwh%\lib\libmysql.lib %fwh%\lib\dolphin.lib + >> b32.bc
echo %hdirl%\hbwin.lib + >> b32.bc
echo %hdirl%\%GT%.lib + >> b32.bc
echo %hdirl%\hbrtl.lib + >> b32.bc
echo %hdirl%\hbvm.lib + >> b32.bc
echo %hdirl%\hblang.lib + >> b32.bc
echo %hdirl%\hbmacro.lib + >> b32.bc
echo %hdirl%\hbrdd.lib + >> b32.bc
echo %hdirl%\rddntx.lib + >> b32.bc
echo %hdirl%\rddcdx.lib + >> b32.bc
echo %hdirl%\rddfpt.lib + >> b32.bc
echo %hdirl%\hbsix.lib + >> b32.bc
echo %hdirl%\hbdebug.lib + >> b32.bc
echo %hdirl%\hbcommon.lib + >> b32.bc
echo %hdirl%\hbpp.lib + >> b32.bc
echo %hdirl%\hbcpage.lib + >> b32.bc
echo %hdirl%\hbcplr.lib + >> b32.bc
echo %hdirl%\hbct.lib + >> b32.bc
echo %hdirl%\hbpcre.lib + >> b32.bc
echo %hdirl%\xhb.lib + >> b32.bc
echo %hdirl%\hbziparc.lib + >> b32.bc
echo %hdirl%\hbmzip.lib + >> b32.bc
echo %hdirl%\hbzlib.lib + >> b32.bc
echo %hdirl%\minizip.lib + >> b32.bc
echo %hdirl%\png.lib + >> b32.bc
echo %hdirl%\hbcurl.lib + >> b32.bc
echo %hdirl%\hbusrrdd.lib + >> b32.bc

echo %hdirl%\hbcomm.lib + >> b32.bc

echo %fwh%\lib\libcurl.lib + >> b32.bc

rem Uncomment these two lines to use Advantage RDD
rem echo %hdirl%\rddads.lib + >> b32.bc
rem echo %hdirl%\Ace32.lib + >> b32.bc

rem echo %fwh%\lib\dolphin.lib + >> b32.bc
rem echo %fwh%\lib\libmysql.lib + >> b32.bc
 
echo %bcdir%\lib\cw32.lib + >> b32.bc
echo %bcdir%\lib\uuid.lib + >> b32.bc
echo %bcdir%\lib\import32.lib + >> b32.bc
echo %bcdir%\lib\wininet.lib + >> b32.bc
echo %bcdir%\lib\ws2_32.lib + >> b32.bc
echo %bcdir%\lib\psdk\odbc32.lib + >> b32.bc
echo %bcdir%\lib\psdk\nddeapi.lib + >> b32.bc
echo %bcdir%\lib\psdk\iphlpapi.lib + >> b32.bc
echo %bcdir%\lib\psdk\msimg32.lib + >> b32.bc
echo %bcdir%\lib\psdk\psapi.lib + >> b32.bc
echo %bcdir%\lib\psdk\rasapi32.lib + >> b32.bc
echo %bcdir%\lib\psdk\gdiplus.lib + >> b32.bc
echo %bcdir%\lib\psdk\shell32.lib, >> b32.bc

IF EXIST %1.res echo %1.res >> b32.bc
if %GT% == gtwin %bcdir%\bin\ilink32 -Gn -Tpe -s @b32.bc
IF ERRORLEVEL 1 GOTO LINKERROR
if %GT% == gtgui %bcdir%\bin\ilink32 -Gn -aa -Tpe -s @b32.bc
IF ERRORLEVEL 1 GOTO LINKERROR
ECHO * Application successfully built *
rem signtool.exe sign /fd sha256 %1.exe
%1
GOTO EXIT
ECHO

rem delete temporary files
@del %1.c

:COMPILEERRORS
@type comp.log
@type warnings.log
ECHO * Compile 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
He revisado los archivos de configuración del bcc582 y está todo apuntando a su sitio. Por más que lo reviso No encuentro donde está el problema.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Migrar a Harbour - Errores del compilador

Post by Antonio Linares »

Paz,

Este include:

#include <hbapiitm.h>

no tienes que ponerlo en el PRG sino en el fichero en C que estás compilando.

Estas añadiendo algún fichero en C a tu aplicación ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrar a Harbour - Errores del compilador

Post by Verhoven »

Ese fichero de lo estoy poniendo en un prg en el que incluyo parte del código en C mediante el empleo de las clusulas #pragma BEGINDUMP. El problema es que lo había incluido fuera de esas claúsulas porque no sabía que debía de estar dentro. Poniéndolo dentro desaparece el fallo.
Gracias Antonio.
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrar a Harbour - Errores del compilador

Post by Verhoven »

Creo, que ya me queda poco para la migración. He conseguido que compile, con muchos warnings, pero compila y genera el exe.

Pero ahora al arrancar el programa me da un error que al construirlo con xHarbour no da y tampoco entiendo de donde sale. Se trata de una clase que incluye una referencia a Super y arroja el siguiente error:

Code: Select all

   Error description: Error BASE/1003  Variable does not exist: SUPER

Stack Calls
===========
   Called from: .\sourceh\classes\twbrowse\wbrowse.PRG => (b)TWBROWSE( 600 )
   Called from: .\sourceh\classes\twbrowse\wbrowse.PRG => TWBROWSE:INITIATE( 0 )
   Called from:  => __OBJSENDMSG( 0 )
   Called from: .\source\function\HARBOUR.PRG => OSEND( 288 )
   Called from: .\source\function\HARBOUR.PRG => ASEND( 256 )
   Called from: .\source\classes\DIALOG.PRG => TDIALOG:INITIATE( 645 )
   Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 315 )
   Called from: wintpv.prg => ARRANQUETPV( 1662 )
   Called from: wintpv.prg => (b)MAIN( 392 )
   Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE( 1039 )
   Called from: wintpv.prg => MAIN( 392 )
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrar a Harbour - Errores del compilador

Post by Verhoven »

La línea concreta en la que da error de ejecución es esta:

Code: Select all

   METHOD Initiate( hDlg ) INLINE Super:Initiate( hDlg ), ::Default()
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Migrar a Harbour - Errores del compilador

Post by Antonio Linares »

Cámbiala asi:

METHOD Initiate( hDlg ) INLINE ::Super:Initiate( hDlg ), ::Default()
regards, saludos

Antonio Linares
www.fivetechsoft.com
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrar a Harbour - Errores del compilador

Post by Verhoven »

Ha bastado con sustitur Super por ::Super y ya arranca bien el programa.
Parece que la migración a Harbour va bien. Vamos a probar el programa y si todo va bien.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Migrar a Harbour - Errores del compilador

Post by Antonio Linares »

muy bien :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply