Page 1 of 6

Migrando de FWH 32 a FWH 64 - windows.h

PostPosted: Mon Dec 22, 2014 9:52 pm
by Verhoven
Migrando a 64 bits nos encontramos que al intentar compilar un archivo con funciones en C nos dice que no encuentra el archivo de cabecera windows.h
El error es: wbrwline.c .\sourceh\function\twbrowse\wbrwline.c(7) : fatal error C1083: No se puede abrir el archivo incluir: 'Windows.h': No such file or directory

Este archivo windows.h es de Borland y como al pasar a 64 bits tenemos que usar el MSVC++ no encuentro cual es el equivalente para MSVC++ para hacer la sustitución.

Paso las líneas de compilación que teníamos para Borland:
Code: Select all  Expand view

BCC32 -D__FLAT__ -D__HARBOUR__ -M -c -O2 -I%INCLUDE% -tW %NAME%.c >> %NAMELIB%.log


y la que hemos puesto para MSVC++
Code: Select all  Expand view
cl  -D__FLAT__ -D__HARBOUR__ -TC -W3 -O2 -c -I%hdir%\include %NAME%.c > %NAMELIB%.log


El principo del código que necesitamos compilar es el siguiente:
Code: Select all  Expand view
void * __conArrayGet( void *, void *, ... );
long __conGetNL( void *, long * );
long __conRelease( void * );

#define _HB_API_INTERNAL_   // AÑADIDO PARA COMPILAR CON HARBOUR EN VEZ DE CON XHARBOUR

#include <Windows.h>
#ifdef __HARBOUR__
   #include <hbapi.h>
   #include <hbapiitm.h>
   #include <hbvm.h>
   // #include <hbfast.h>
   #define MoveTo( hDC, x, y ) MoveToEx( hDC, x, y, NULL )
   #define _PutSym( _SymEval ) hb_vmPushSymbol( &hb_symEval )
   #define _xPushM  hb_vmPush
   #define _PutLN   hb_vmPushLong
   #define _xEval   hb_vmDo
   #define _cEval0  hb_vmEvalBlock
   #define _Get_Sym hb_dynsymFindName
#endif

#define LOGICAL   HB_IT_LOGICAL
#define NUMERIC   HB_IT_NUMERIC
#define CHARACTER HB_IT_STRING
#define BLOCK     HB_IT_BLOCK

#define HA_LEFT    0  // by CeSoTech Alineaciones Horizontales y Verticales
#define HA_RIGHT   1
#define HA_CENTER  2
#define VA_TOP     4
#define VA_BOTTOM  8
#define VA_CENTER  32

#ifdef __FLAT__
#undef  PCLIPVAR
#define PCLIPVAR PHB_ITEM
#endif

#ifdef __XHARBOUR__
   void hb_storvni( int iValue, int iParam, int iIndex );
   long hb_parvnl( int iParam, int iIndex );
   int hb_parvni( int iParam, int iIndex );
   void hb_storvnl( LONG lValue, int iParam, int iIndex );
#endif

Re: Migrando de FWH 32 a FWH 64 - windows.h

PostPosted: Mon Dec 22, 2014 9:59 pm
by Antonio Linares
Antes de llamar a cl.exe tienes que llamar a este fichero bat si usas un Windows de 32 bits:

call "%ProgramFiles%\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"

Si usas un Windows de 64 bits entonces tienes que llamar a este:

call "%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"

Eso hace que las trayectorias a los ficheros de cabecera de MSVC queden definidos

Re: Migrando de FWH 32 a FWH 64 - windows.h

PostPosted: Mon Dec 22, 2014 10:03 pm
by Verhoven
Lo hago usando estas líneas del propio build64.bat que viene en los samples de FWH64:
Code: Select all  Expand view
if exist "%ProgramFiles%\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" call "%ProgramFiles%\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86_amd64
if exist "%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" call "%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86_amd64
 

He comprado la existencia de ese fichero vcvarsall.bat y existe en la carpeta %ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC

Re: Migrando de FWH 32 a FWH 64 - windows.h

PostPosted: Tue Dec 23, 2014 6:41 am
by Antonio Linares
Esos ficheros batch se encargan de establecer las rutas correctas.

En mi caso, windows.h está en c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include

Re: Migrando de FWH 32 a FWH 64 - windows.h

PostPosted: Tue Dec 23, 2014 9:27 am
by Verhoven
Antonio, te ruego le des un repaso al batch que usamos y hemos intentado adaptar para MSVC++ porque hemos hecho algunas modificaciones al que tenemos para Borland (que nos funciona en Harbour y xHarbour) pero no damos con la solución para MVSC++ para pasarlo a 64 bits.

Ahora, después de algunas modificaciones, genera el primer obj (con algunos warnings) pero se para diciendo que no encuentra "Files.prg" cuando es una referencia que no tenemos en ninguno de los dos .PRG que usamos.

El Batch para compilar es:
Code: Select all  Expand view
@echo off
ECHO Generando lib WBrowse, espere por favor......

SET OLDPATH=%PATH%
SET OLDINCLUDE=%INCLUDE%
SET OLDLIB=%LIB%

SET HARBOUR=C:\Harbour
SET FWH=C:\fwh64

SET NAMELIB=TWBRWX64_H
SET RUTALIB=.\LIB

REM 64 BIT MVSC++
PATH=%PATH%;%HARBOUR%\BIN
SET INCLUDE=%FWH%\INCLUDE;%HARBOUR%\INCLUDE;.\INCLUDE
SET LIB=%FWH%\LIB;%HARBOUR%\LIB

if exist "%ProgramFiles%\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" call "%ProgramFiles%\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86_amd64
if exist "%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" call "%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86_amd64


REM  ----------------------------------------------------------------
REM  --------------  PRIMERO EL CODIGO FUENTE EN .C  ----------------
REM  ----------------------------------------------------------------

SET CARPETA=.\sourceh\function\twbrowse
SET NAME=wbrwline

REM  BCC32 -D__FLAT__ -D__HARBOUR__ -M -c -O2 -I%INCLUDE% -tW %CARPETA%\%NAME%.c > %NAMELIB%.log
rem cl -TC -W3 -O2 -c -I%hdir%\include %CARPETA%\%NAME%.c > %NAMELIB%.log
cl -D__FLAT__ -D__HARBOUR__ -TC -W3 -O2 -c %CARPETA%\%NAME%.c > %NAMELIB%.log

IF ERRORLEVEL 1 GOTO END

ECHO ........... %NAME% Compilada

REM  ----------------------------------------------------------------
REM  -------------  DESPUES EL CODIGO FUENTE EN .PRG  ---------------
REM  ----------------------------------------------------------------
SET CARPETA=.\sourceh\classes\twbrowse
SET NAME=tmultise
harbour %CARPETA%\%NAME%.PRG  /n /i%INCLUDE% /p >> %NAMELIB%.log
IF ERRORLEVEL 1 GOTO END

REM BCC32 -D__FLAT__ -D__HARBOUR__ -M -c -O2 -I%INCLUDE% -tW %NAME%.c >> %NAMELIB%.log
cl -D__FLAT__ -D__HARBOUR__ -TC -W3 -O2 -c %CARPETA%\%NAME%.c > %NAMELIB%.log

IF ERRORLEVEL 1 GOTO END
DEL %CARPETA%\%NAME%.PPO
DEL %NAME%.c
ECHO ........... %NAME% Compilada

SET NAME=wbrowse
harbour %CARPETA%\%NAME%.PRG  /n /i%INCLUDE% /p >> %NAMELIB%.log
IF ERRORLEVEL 1 GOTO END

REM BCC32 -D__FLAT__ -D__HARBOUR__ -M -c -O2 -I%INCLUDE% -tW %NAME%.c >> %NAMELIB%.log
cl -D__FLAT__ -D__HARBOUR__ -TC -W3 -O2 -c %CARPETA%\%NAME%.c > %NAMELIB%.log


IF ERRORLEVEL 1 GOTO END
DEL %CARPETA%\%NAME%.PPO
DEL %NAME%.c
ECHO ........... %NAME% Compilada

REM *****************************************************************
REM *******************  SE CREA LA LIBRERIA  ***********************
REM *****************************************************************

REM tlib %NAMELIB%.lib +wbrowse + tmultise + wbrwline >> %NAMELIB%.log  LINEA PARA BORLAND

echo %NAMELIB%.lib  > msvc.tmp
echo wbrowse.obj  > msvc.tmp
echo tmultise.obj  > msvc.tmp
echo wbrwline.obj  > msvc.tmp

link @msvc.tmp /nologo /subsystem:windows /force:multiple /NODEFAULTLIB:libc


IF ERRORLEVEL 1 GOTO END
ECHO ................................Lib %NOMELIB% enlazada.

DEL *.OBJ >> %NAMELIB%.log
DEL *.BAK >> %NAMELIB%.log
DEL *.BAK >> %NAMELIB%.log
DEL %RUTALIB%\%NAMELIB%.lib >> %NAMELIB%.log
move %NAMELIB%.lib %RUTALIB%\%NAMELIB%.lib >> %NAMELIB%.log
DEL %NAMELIB%.log >> OK.log

:END


SET PATH=%OLDPATH%
SET INCLUDE=%OLDINCLUDE%
SET LIB=%OLDLIB%
SET OLDPATH=
SET OLDINCLUDE=
SET OLDLIB=
SET RUTALIB=
SET NAMELIB=
 

Re: Migrando de FWH 32 a FWH 64 - windows.h

PostPosted: Tue Dec 23, 2014 9:33 pm
by Verhoven
Finalmente he conseguido compilar, pero no soy capaz de que linke los 3 .obj para obtener una .lib
Para el linkado uso la línea que viene con el FWH64, pero no la genera porque seguramente es para generar un .exe,
y no encuentro por inet que comando usar para generar una .lib

El código para linkar que utilizo es:
Code: Select all  Expand view
REM  ----------------------------------------------------------------
REM  --------------  LINKADO                         ----------------
REM  ----------------------------------------------------------------

echo wbrowse.obj  > msvc.tmp
echo tmultise.obj  >> msvc.tmp
echo wbrwline.obj  >> msvc.tmp

link @msvc.tmp /subsystem:windows /force:multiple /NODEFAULTLIB:libc > LINK_ERRORS.LOG

IF ERRORLEVEL 1 GOTO LINKERROR

Re: Migrando de FWH 32 a FWH 64 - windows.h

PostPosted: Tue Dec 23, 2014 9:53 pm
by Verhoven
Mis disculpas.
Hay que usar LIB en vez de LINK.
Ahora necesito explorar las diversas opciones para ver cual es preferible.

No obstante lo cual si alguien ya las tiene le agradeceré que las comparta.

Re: Migrando de FWH 32 a FWH 64 - windows.h

PostPosted: Tue Dec 23, 2014 10:18 pm
by Verhoven
Obtengo los siguientes errores que impiden generar el EXE:

Code: Select all  Expand view
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2def.h(96) : warning C4005: 'AF_IPX' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(452) : vea la definici¢n anterior de 'AF_IPX'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2def.h(136) : warning C4005: 'AF_MAX' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(471) : vea la definici¢n anterior de 'AF_MAX'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2def.h(173) : warning C4005: 'SO_DONTLINGER' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(394) : vea la definici¢n anterior de 'SO_DONTLINGER'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2def.h(217) : error C2011: 'sockaddr' : nueva definici¢n del tipo 'struct'
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(477) : vea la declaraci¢n de 'sockaddr'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2def.h(414) : error C2059: error de sintaxis : 'constante'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2def.h(549) : warning C4005: 'IN_CLASSA' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(279) : vea la definici¢n anterior de 'IN_CLASSA'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2def.h(555) : warning C4005: 'IN_CLASSB' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(285) : vea la definici¢n anterior de 'IN_CLASSB'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2def.h(561) : warning C4005: 'IN_CLASSC' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(291) : vea la definici¢n anterior de 'IN_CLASSC'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2def.h(572) : warning C4005: 'INADDR_ANY' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(296) : vea la definici¢n anterior de 'INADDR_ANY'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2def.h(574) : warning C4005: 'INADDR_BROADCAST' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(298) : vea la definici¢n anterior de 'INADDR_BROADCAST'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2def.h(608) : error C2011: 'sockaddr_in' : nueva definici¢n del tipo 'struct'
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(304) : vea la declaraci¢n de 'sockaddr_in'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(125) : error C2011: 'fd_set' : nueva definici¢n del tipo 'struct'
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(60) : vea la declaraci¢n de 'fd_set'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(145) : warning C4005: 'FD_CLR' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(89) : vea la definici¢n anterior de 'FD_CLR'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(160) : warning C4005: 'FD_SET' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(94) : vea la definici¢n anterior de 'FD_SET'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(169) : error C2011: 'timeval' : nueva definici¢n del tipo 'struct'
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(103) : vea la declaraci¢n de 'timeval'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(225) : error C2011: 'hostent' : nueva definici¢n del tipo 'struct'
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(159) : vea la declaraci¢n de 'hostent'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(238) : error C2011: 'netent' : nueva definici¢n del tipo 'struct'
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(172) : vea la declaraci¢n de 'netent'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(245) : error C2011: 'servent' : nueva definici¢n del tipo 'struct'
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(179) : vea la declaraci¢n de 'servent'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(257) : error C2011: 'protoent' : nueva definici¢n del tipo 'struct'
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(191) : vea la declaraci¢n de 'protoent'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(353) : error C2011: 'WSAData' : nueva definici¢n del tipo 'struct'
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(314) : vea la declaraci¢n de 'WSAData'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(451) : error C2011: 'sockproto' : nueva definici¢n del tipo 'struct'
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(486) : vea la declaraci¢n de 'sockproto'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(493) : error C2011: 'linger' : nueva definici¢n del tipo 'struct'
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(523) : vea la declaraci¢n de 'linger'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(506) : warning C4005: 'SOMAXCONN' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(536) : vea la definici¢n anterior de 'SOMAXCONN'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(536) : warning C4005: 'FD_READ' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(554) : vea la definici¢n anterior de 'FD_READ'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(539) : warning C4005: 'FD_WRITE' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(555) : vea la definici¢n anterior de 'FD_WRITE'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(542) : warning C4005: 'FD_OOB' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(556) : vea la definici¢n anterior de 'FD_OOB'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(545) : warning C4005: 'FD_ACCEPT' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(557) : vea la definici¢n anterior de 'FD_ACCEPT'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(548) : warning C4005: 'FD_CONNECT' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(558) : vea la definici¢n anterior de 'FD_CONNECT'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(551) : warning C4005: 'FD_CLOSE' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(559) : vea la definici¢n anterior de 'FD_CLOSE'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1577) : error C2375: accept' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(734) : vea la declaraci¢n de '
accept'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1599) : error C2375: bind'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(739) : vea la declaraci¢n de 'bind'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1618) : error C2375: closesocket' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(744) : vea la declaraci¢n de '
closesocket'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1637) : error C2375: connect'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(746) : vea la declaraci¢n de 'connect'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1658) : error C2375: ioctlsocket' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(751) : vea la declaraci¢n de '
ioctlsocket'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1679) : error C2375: getpeername'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(756) : vea la declaraci¢n de 'getpeername'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1700) : error C2375: getsockname' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(761) : vea la declaraci¢n de '
getsockname'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1723) : error C2375: getsockopt'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(766) : vea la declaraci¢n de 'getsockopt'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1744) : error C2375: htonl' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(773) : vea la declaraci¢n de '
htonl'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1761) : error C2375: htons'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(775) : vea la declaraci¢n de 'htons'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1778) : error C2375: inet_addr' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(777) : vea la declaraci¢n de '
inet_addr'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1795) : error C2375: inet_ntoa'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(779) : vea la declaraci¢n de 'inet_ntoa'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1896) : error C2375: listen' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(781) : vea la declaraci¢n de '
listen'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1914) : error C2375: ntohl'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(785) : vea la declaraci¢n de 'ntohl'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1931) : error C2375: ntohs' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(787) : vea la declaraci¢n de '
ntohs'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1951) : error C2375: recv'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(789) : vea la declaraci¢n de 'recv'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(1976) : error C2375: recvfrom' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(795) : vea la declaraci¢n de '
recvfrom'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2002) : error C2375: select'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(803) : vea la declaraci¢n de 'select'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2026) : error C2375: send' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(810) : vea la declaraci¢n de '
send'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2051) : error C2375: sendto'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(816) : vea la declaraci¢n de 'sendto'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2077) : error C2375: setsockopt' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(824) : vea la declaraci¢n de '
setsockopt'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2099) : error C2375: shutdown'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(831) : vea la declaraci¢n de 'shutdown'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2120) : error C2375: socket' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(835) : vea la declaraci¢n de '
socket'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2144) : error C2375: gethostbyaddr'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(842) : vea la declaraci¢n de 'gethostbyaddr'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2163) : error C2375: gethostbyname' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(847) : vea la declaraci¢n de '
gethostbyname'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2181) : error C2375: gethostname'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(849) : vea la declaraci¢n de 'gethostname'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2221) : error C2375: getservbyport' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(853) : vea la declaraci¢n de '
getservbyport'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2240) : error C2375: getservbyname'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(857) : vea la declaraci¢n de 'getservbyname'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2258) : error C2375: getprotobynumber' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(861) : vea la declaraci¢n de '
getprotobynumber'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2275) : error C2375: getprotobyname'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(863) : vea la declaraci¢n de 'getprotobyname'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2296) : error C2375: WSAStartup' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(867) : vea la declaraci¢n de '
WSAStartup'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2315) : error C2375: WSACleanup'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(871) : vea la declaraci¢n de 'WSACleanup'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2332) : error C2375: WSASetLastError' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(873) : vea la declaraci¢n de '
WSASetLastError'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2349) : error C2375: WSAGetLastError'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(875) : vea la declaraci¢n de 'WSAGetLastError'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2366) : error C2375: WSAIsBlocking' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(877) : vea la declaraci¢n de '
WSAIsBlocking'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2383) : error C2375: WSAUnhookBlockingHook'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(879) : vea la declaraci¢n de 'WSAUnhookBlockingHook'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2400) : error C2375: WSASetBlockingHook' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(881) : vea la declaraci¢n de '
WSASetBlockingHook'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2417) : error C2375: WSACancelBlockingCall'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(883) : vea la declaraci¢n de 'WSACancelBlockingCall'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2439) : error C2375: WSAAsyncGetServByName' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(885) : vea la declaraci¢n de '
WSAAsyncGetServByName'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2466) : error C2375: WSAAsyncGetServByPort'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(893) : vea la declaraci¢n de 'WSAAsyncGetServByPort'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2492) : error C2375: WSAAsyncGetProtoByName' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(901) : vea la declaraci¢n de '
WSAAsyncGetProtoByName'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2517) : error C2375: WSAAsyncGetProtoByNumber'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(908) : vea la declaraci¢n de 'WSAAsyncGetProtoByNumber'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2542) : error C2375: WSAAsyncGetHostByName' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(915) : vea la declaraci¢n de '
WSAAsyncGetHostByName'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2569) : error C2375: WSAAsyncGetHostByAddr'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(922) : vea la declaraci¢n de 'WSAAsyncGetHostByAddr'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2592) : error C2375: WSACancelAsyncRequest' : nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(931) : vea la declaraci¢n de '
WSACancelAsyncRequest'
C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock2.h(2612) : error C2375: WSAAsyncSelect'
: nueva definici¢n; vinculaci¢n distinta
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(933) : vea la declaraci¢n de 'WSAAsyncSelect'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2ipdef.h(124) : warning C4005: 'IP_TOS' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(344) : vea la definici¢n anterior de 'IP_TOS'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2ipdef.h(125) : warning C4005: 'IP_TTL' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(343) : vea la definici¢n anterior de 'IP_TTL'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2ipdef.h(126) : warning C4005: 'IP_MULTICAST_IF' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(338) : vea la definici¢n anterior de 'IP_MULTICAST_IF'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2ipdef.h(127) : warning C4005: 'IP_MULTICAST_TTL' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(339) : vea la definici¢n anterior de 'IP_MULTICAST_TTL'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2ipdef.h(128) : warning C4005: 'IP_MULTICAST_LOOP' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(340) : vea la definici¢n anterior de 'IP_MULTICAST_LOOP'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2ipdef.h(129) : warning C4005: 'IP_ADD_MEMBERSHIP' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(341) : vea la definici¢n anterior de 'IP_ADD_MEMBERSHIP'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2ipdef.h(130) : warning C4005: 'IP_DROP_MEMBERSHIP' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(342) : vea la definici¢n anterior de 'IP_DROP_MEMBERSHIP'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2ipdef.h(131) : warning C4005: 'IP_DONTFRAGMENT' : redefinici¢n de macro
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(345) : vea la definici¢n anterior de 'IP_DONTFRAGMENT'
C:\Program Files (x86)\Windows Kits\8.0\include\shared\ws2ipdef.h(715) : error C2011: 'ip_mreq' : nueva definici¢n del tipo 'struct'
        C:\Program Files (x86)\Windows Kits\8.0\include\um\winsock.h(355) : vea la declaraci¢n de 'ip_mreq'
internet.prg(390) : warning C4244: 'funci¢n' : conversi¢n de 'HB_SIZE' a 'DWORD'; posible p‚rdida de datos
internet.prg(653) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
internet.prg(714) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
internet.prg(734) : warning C4267: 'funci¢n' : conversi¢n de 'size_t' a 'int'; posible p‚rdida de datos
 


En 32 bits necesito utilizar las librerías:
echo wininet.lib >> msvc.tmp
echo ws2_32.lib >> msvc.tmp
Y las he incluido por ver si así se eliminaban los errores pero no ha servido de solución. Creo que el problema viene de aquí, pero no se arreglarlo.

Re: Migrando de FWH 32 a FWH 64 - windows.h

PostPosted: Tue Dec 23, 2014 10:56 pm
by Antonio Linares
Paz,

Ma da la impresión de que estas usando diversos ficheros de cabecera que no son compatibles entre si.

Porque no instalas Visual Studio Community que es la versión más reciente de Microsoft y probais con ella ?

Es la que yo estoy usando para construir FWH para Microsoft.

Re: Migrando de FWH 32 a FWH 64 - windows.h

PostPosted: Tue Dec 23, 2014 10:59 pm
by Antonio Linares
Paz,

Yo construyo FWH para Microsoft así:

"$(VCINSTALLDIR)"bin\lib.exe lib\Fiveh32.lib /OUT:lib\Fiveh32.lib modulo.obj

Imagino que si especificas ahí más de un OBJ se incluiran todos en la librería :-)

Re: Migrando de FWH 32 a FWH 64 - windows.h

PostPosted: Wed Dec 24, 2014 6:19 am
by Verhoven
Hemos conseguido montar la libreria en 64 bits con la siguiente línea:

Code: Select all  Expand view
REM  ----------------------------------------------------------------
REM  --------------  ENLAZA LA LIBRERIA              ----------------
REM  ----------------------------------------------------------------
set NAMELIB=TWBRWX64_H.LIB

echo wbrowse.obj  > msvc.tmp
echo tmultise.obj  >> msvc.tmp
echo wbrwline.obj  >> msvc.tmp

LIB /OUT:.\LIB\%NAMELIB% @msvc.tmp > LIB_ERROR.LOG

IF ERRORLEVEL 1 GOTO LIBERROR
ECHO ................................Lib %NOMELIB% enlazada.
 


Vamos a probar esto otro que dices de Visual Studio Community para intentar terminar de construir la aplicación en 64 bits. De momento el paso de xHarbour en 32 bits ha ido mucho más rápido y mejor de lo que esperábamos. Han sido muy pocos los cambios necesarios y va de maravilla. Vamos a ver si acabamos ahora con el montaje en 64 bits.

Re: Migrando de FWH 32 a FWH 64 - windows.h

PostPosted: Wed Dec 24, 2014 6:23 am
by Verhoven
Con el paso de xHarbour quiero decir cambiar a Harbour.

Re: Migrando de FWH 32 a FWH 64 - windows.h

PostPosted: Wed Dec 24, 2014 6:31 am
by Antonio Linares
Paz,

muy bien! :-)

Re: Migrando de FWH 32 a FWH 64 - windows.h

PostPosted: Wed Dec 24, 2014 10:53 am
by Verhoven
Estamos tratando de compilar a 64 bits en un equipo con W7.
El problema surge al intentar instalar Visual Studio Community con el ISO descargado directamente desde MS, el VS2013.4_dskexp_ESN.ISO (6.5GB).
La instalación se bloquea porque pide tener instalada una versión más reciente de windows.
Es decir, que no se puede probar a instalar Visual Studio Express 2013 para escritorio en W7.

Por ello Antonio necesitamos encontrar una solución para poder compilar con VS 2012.

Re: Migrando de FWH 32 a FWH 64 - windows.h

PostPosted: Wed Dec 24, 2014 1:00 pm
by Verhoven
Estamos encontrando también problemas para compilar el RC generado con WorkShop con el RC de Visual Studio.
Necesitamos algo para convertir los archivos generados por WorkShop.

Por ejemplo para conseguir compilar hemos tenido que añadir al principio del fichero la línea
Code: Select all  Expand view
#include <windows.h>

y hemostenido que comentar con // todas las líneas como las siguientes para conseguir compilar:
Code: Select all  Expand view
GROUPBOX "Puerto RS-232", IDC_GROUPBOX44, 12, 7, 187, 24, BS_GROUPBOX


Code: Select all  Expand view

Crcla BITMAP
{
'42 4D 16 02 00 00 00 00 00 00 76 00 00 00 28 00'
'00 00 1A 00 00 00 1A 00 00 00 01 00 04 00 00 00'
'00 00 A0 01 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80'
'00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
'00 00 80 80 80 00 C0 C0 C0 00 00 00 FF 00 00 FF'
'00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
'00 00 FF FF FF 00 88 88 88 88 88 88 88 88 88 88'
'88 88 88 00 00 00 88 88 88 88 88 88 88 88 88 88'
'88 88 88 00 00 00 88 88 88 88 88 88 88 88 88 88'
'88 88 88 00 00 00 88 88 88 88 88 88 88 88 88 88'
'88 88 88 00 00 00 88 80 00 00 00 00 00 00 00 00'
'00 08 88 00 00 00 88 80 EE EE E0 EE EE EE 0E EE'
'EE 08 88 00 00 00 88 80 EE EE E0 EE EE EE 0E EE'
'EE 08 88 00 00 00 88 80 00 00 00 00 00 00 00 00'
'00 08 88 00 00 00 88 80 BB BB B0 FF FF FF 0F FF'
'FF 08 88 00 00 00 88 80 BB BB B0 FF FF FF 0F FF'
'FF 08 88 00 00 00 88 80 00 00 00 00 00 00 00 00'
'00 08 88 00 00 00 88 80 BB BB B0 FF FF FF 0F FF'
'FF 08 88 00 00 00 88 80 BB BB B0 FF FF FF 0F FF'
'FF 08 88 00 00 00 88 80 00 00 00 00 00 00 00 00'
'00 08 88 00 00 00 88 80 BB BB B0 FF FF FF 0F FF'
'FF 08 88 00 00 00 88 80 BB BB B0 FF FF FF 0F FF'
'FF 08 88 00 00 00 88 80 00 00 00 00 00 00 00 00'
'00 08 88 00 00 00 88 80 BB BB B0 FF FF FF 0F FF'
'FF 08 88 00 00 00 88 80 BB BB B0 FF FF FF 0F FF'
'FF 08 88 00 00 00 88 80 00 00 00 00 00 00 00 00'
'00 08 88 00 00 00 88 80 CC CC C0 CC CC CC 0C CC'
'CC 08 88 00 00 00 88 80 CC CC C0 CC CC CC 0C CC'
'CC 08 88 00 00 00 88 80 00 00 00 00 00 00 00 00'
'00 08 88 00 00 00 88 88 88 88 88 88 88 88 88 88'
'88 88 88 00 00 00 88 88 88 88 88 88 88 88 88 88'
'88 88 88 00 00 00 88 88 88 88 88 88 88 88 88 88'
'88 88 88 00 00 00'
}
 


Code: Select all  Expand view
LOGO ICON


Code: Select all  Expand view
1 24 "winxp.man"