Page 1 of 1

FWH64 - hb_fopen

Posted: Sat Jul 03, 2021 7:03 am
by Verhoven
En la actualización de FWH64 me acabo de encontrar con este otro problema al tratar de compilar código que incluye la función hb_fopen:

Antes de la llamada a la función tengo esto:

Code: Select all | Expand

FILE * hb_fopen( const char * path, const char * mode );
 


En el prg, en una parte en C, tengo puesto:

Code: Select all | Expand

  FILE *fichero = hb_fopen( "LISTFTP.DAT", "w" );
 


Y al compilar obtengo el error siguiente:

Code: Select all | Expand

C:\harbour64\include\hbapifs.h(479): error C2732: la especificación de vinculación se contradice con la especificación anterior para 'hb_fopen'
C:\harbour64\include\hbapifs.h(479): note: vea la declaración de 'hb_fopen'
.


Usando la función fopen de C no obtengo el error. Solo el warning siguiente:

Code: Select all | Expand

internet.prg(623): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.


Pero el código si se usa esa función recomendada por el MSVC 2019, fopen_s, no sería tan portable y prefiero no usarla.

Re: FWH64 - hb_fopen

Posted: Sat Jul 03, 2021 9:17 am
by Antonio Linares
Comenta esta línea:

// FILE * hb_fopen( const char * path, const char * mode );

no te hace falta

Re: FWH64 - hb_fopen

Posted: Sat Jul 03, 2021 10:34 am
by Verhoven
Comentando esa línea arroja este error:

Code: Select all | Expand

[vcvarsall.bat] Environment initialized for: 'x86_x64'
***** Compiling with Harbour 64 bytes...
Harbour 3.2.0dev (r2011030937)
Copyright (c) 1999-2020, https://harbour.github.io/
Compiling 'wintpv.prg' and generating preprocessed output to 'wintpv.ppo'...
Lines 73276, Functions/Procedures 861
Generating C source output to 'wintpv.c'... Done.
.
***** Compiling with MSVC 2019 64 bytes...
Compilador de optimización de C/C++ de Microsoft (R) versión 19.29.30038.1 para x64
(C) Microsoft Corporation. Todos los derechos reservados.

wintpv.c
internet.prg(546): error C3861: 'hb_fopen': no se encontró el identificador

Re: FWH64 - hb_fopen

Posted: Sat Jul 03, 2021 2:33 pm
by karinha

Re: FWH64 - hb_fopen

Posted: Sat Jul 03, 2021 2:56 pm
by xmanuel
Parece que te falte el include -> hbapifs.h que es donde esta declarado el prototipo de la función....
Está definido como
extern HB_EXPORT FILE * hb_fopen( const char *path, const char *mode );

Re: FWH64 - hb_fopen

Posted: Sat Jul 03, 2021 7:24 pm
by Verhoven
Incluyendo el fichero que dice Manuel ha funcionado. Muchas gracias.

Re: FWH64 - hb_fopen

Posted: Sun Jul 04, 2021 5:50 am
by Antonio Linares
> C:\harbour64\include\hbapifs.h(479): error C2732: la especificación de vinculación se contradice con la especificación anterior para 'hb_fopen'

En tu primer ejemplo lo estabas incluyendo