Migrando de FWH 32 a FWH 64 - windows.h

Migrando de FWH 32 a FWH 64 - windows.h

Postby Verhoven » Mon Dec 22, 2014 9:52 pm

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

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

Postby Antonio Linares » Mon Dec 22, 2014 9:59 pm

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

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

Postby Verhoven » Mon Dec 22, 2014 10:03 pm

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

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

Postby Antonio Linares » Tue Dec 23, 2014 6:41 am

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

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

Postby Verhoven » Tue Dec 23, 2014 9:27 am

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

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

Postby Verhoven » Tue Dec 23, 2014 9:33 pm

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

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

Postby Verhoven » Tue Dec 23, 2014 9:53 pm

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

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

Postby Verhoven » Tue Dec 23, 2014 10:18 pm

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

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

Postby Antonio Linares » Tue Dec 23, 2014 10:56 pm

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: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

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

Postby Antonio Linares » Tue Dec 23, 2014 10:59 pm

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

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

Postby Verhoven » Wed Dec 24, 2014 6:19 am

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

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

Postby Verhoven » Wed Dec 24, 2014 6:23 am

Con el paso de xHarbour quiero decir cambiar a Harbour.
Verhoven
 
Posts: 505
Joined: Sun Oct 09, 2005 7:23 pm

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

Postby Antonio Linares » Wed Dec 24, 2014 6:31 am

Paz,

muy bien! :-)
regards, saludos

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

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

Postby Verhoven » Wed Dec 24, 2014 10:53 am

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

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

Postby Verhoven » Wed Dec 24, 2014 1:00 pm

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

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 84 guests