Migrando de FWH 32 a FWH 64 - windows.h

Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Migrando de FWH 32 a FWH 64 - windows.h

Post 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

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

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

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

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

Post 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
regards, saludos

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

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

Post by Verhoven »

Lo hago usando estas líneas del propio build64.bat que viene en los samples de FWH64:

Code: Select all

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

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

Post 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
regards, saludos

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

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

Post 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

@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=
 
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

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

Post 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

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
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

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

Post 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.
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

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

Post by Verhoven »

Obtengo los siguientes errores que impiden generar el EXE:

Code: Select all

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.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

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

Post 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.
regards, saludos

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

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

Post 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 :-)
regards, saludos

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

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

Post by Verhoven »

Hemos conseguido montar la libreria en 64 bits con la siguiente línea:

Code: Select all

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 _ necesarios y va de maravilla. Vamos a ver si acabamos ahora con el montaje en 64 bits.
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

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

Post by Verhoven »

Con el paso de xHarbour quiero decir cambiar a Harbour.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

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

Post by Antonio Linares »

Paz,

muy bien! :-)
regards, saludos

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

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

Post 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.
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

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

Post 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

#include <windows.h>
y hemostenido que comentar con // todas las líneas como las siguientes para conseguir compilar:

Code: Select all

 GROUPBOX "Puerto RS-232", IDC_GROUPBOX44, 12, 7, 187, 24, BS_GROUPBOX

Code: Select all

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

LOGO ICON

Code: Select all

1 24 "winxp.man"
Post Reply