Page 1 of 6
Migrando de FWH 32 a FWH 64 - windows.h
Posted: 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
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
Re: Migrando de FWH 32 a FWH 64 - windows.h
Posted: 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
Posted: 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
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
Posted: 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
Posted: 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
@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
Posted: 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
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
Posted: 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
Posted: Tue Dec 23, 2014 10:18 pm
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.
Re: Migrando de FWH 32 a FWH 64 - windows.h
Posted: 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
Posted: 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
Posted: 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
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.
Re: Migrando de FWH 32 a FWH 64 - windows.h
Posted: 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
Posted: Wed Dec 24, 2014 6:31 am
by Antonio Linares
Paz,
muy bien!
Re: Migrando de FWH 32 a FWH 64 - windows.h
Posted: 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
Posted: 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
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'
}