Migración desde xHarbour+BCC a Harbour+MSVC

Re: Migración desde xHarbour+BCC a Harbour+MSVC

Postby Ale SB » Fri Feb 27, 2009 8:36 am

Maestro ;

En Vc2005 y Vc2008 no se usa single-thread, agora debe usar solamente la LibcMt.Lib ( multi-threaded ).

La Libc.lib deve ser ignorada :

$(VCDIR)\bin\link @msvc.tmp /NODEFAULTLIB:LIBC.LIB /nologo /subsystem:windows /force:multiple >

http://msdn.microsoft.com/pt-br/library/6wtdswk0(VS.80).aspx

Saluds, Ale
aleseribeli@hotmail.com

FwH, Hb Svn, ADS 8.1, ADS 10, Pelles C, FwPPC, MsVc 2008, MsVc 2010
"Conhecimento, você não subtrai quando divide; mas soma e multiplica."
**---Mário Persona---**
User avatar
Ale SB
 
Posts: 248
Joined: Wed Jan 11, 2006 11:30 am
Location: Campo Grande-MS / Brasil

Re: Migración desde xHarbour+BCC a Harbour+MSVC

Postby Antonio Linares » Fri Feb 27, 2009 10:29 am

Ale,

Si, cierto, gracias :-)
regards, saludos

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

Re: Migración desde xHarbour+BCC a Harbour+MSVC

Postby Antonio Linares » Fri Feb 27, 2009 12:29 pm

Kleyber,

Una vez construyas Harbour con esta nueva version de VC, puedes construir aplicaciones con FWH usando las librerias de FWH existentes. Lo hemos probado y funciona bien :-)

Es decir, VC (2008) mantiene compatibilidad con VC98. Posiblemente la unica incompatibilidad sea con los modulos en C++ que se usan en FWH (ActiveX, GIFs).
regards, saludos

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

Re: Migración desde xHarbour+BCC a Harbour+MSVC

Postby Kleyber » Fri Feb 27, 2009 12:41 pm

Antonio Linares wrote:Kleyber,

Una vez construyas Harbour con esta nueva version de VC, puedes construir aplicaciones con FWH usando las librerias de FWH existentes. Lo hemos probado y funciona bien :-)

Es decir, VC (2008) mantiene compatibilidad con VC98. Posiblemente la unica incompatibilidad sea con los modulos en C++ que se usan en FWH (ActiveX, GIFs).


Entonces eso quiere decir que puedo usar con las libs de FWH 8.02 que uso? Y cuales son las clases que deberia cambiar para que no tenga incompatibilidad con el VC Express?

Saludos
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
User avatar
Kleyber
 
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Re: Migración desde xHarbour+BCC a Harbour+MSVC

Postby Antonio Linares » Fri Feb 27, 2009 12:48 pm

Kleyber,

> Entonces eso quiere decir que puedo usar con las libs de FWH 8.02 que uso?

Si. FiveHM.lib y FiveHCM.lib

> Y cuales son las clases que deberia cambiar para que no tenga incompatibilidad con el VC Express?

En principio ninguna :-) Acabamos de probar los ActiveX y funcionan bien!
regards, saludos

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

Re: Migración desde xHarbour+BCC a Harbour+MSVC

Postby Kleyber » Fri Feb 27, 2009 12:56 pm

Gracias Antonio. Lo voy a probar ahora mismo.

Saludos,
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
User avatar
Kleyber
 
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Re: Migración desde xHarbour+BCC a Harbour+MSVC

Postby Ale SB » Fri Feb 27, 2009 12:59 pm

Maestro,

Usted puede enviarme el make correcto que podremos usar con FWH+Hb_svn+WC2008 con los flags necesarios y un ejemplo de como generar una lib desde 1 prg y 1 fichero C?

Asi podremos regenerar nuestras clases personales !

Saluds, Ale
aleseribeli@hotmail.com

FwH, Hb Svn, ADS 8.1, ADS 10, Pelles C, FwPPC, MsVc 2008, MsVc 2010
"Conhecimento, você não subtrai quando divide; mas soma e multiplica."
**---Mário Persona---**
User avatar
Ale SB
 
Posts: 248
Joined: Wed Jan 11, 2006 11:30 am
Location: Campo Grande-MS / Brasil

Re: Migración desde xHarbour+BCC a Harbour+MSVC

Postby Antonio Linares » Fri Feb 27, 2009 1:13 pm

Ale,

Para hacer un checkout de Harbour nosotros hemos usado este bat:

checkout.bat
Code: Select all  Expand view

c:\"Program Files"\svn\bin\svn co https://harbour-project.svn.sourceforge.net/svnroot/harbour-project/trunk/harbour harbour
 

Usando este SVN que no requiere instalacion:
www.fivetechsoft.com/files/software/svn.zip

Luego para construir Harbour, hemos usado este fichero BAT que hemos copiado en donde esta make_vc.bat

makevc.bat
Code: Select all  Expand view

SET LIB=c:\vc2008\lib
SET INCLUDE=c:\vc2008\include
SET PATH=c:\vc2008\bin;%PATH%

SET HB_CC_NAME=vc
SET HB_ARCHITECTURE=w32
SET HB_GT_LIB=gtgui
SET HB_GT_DEFAULT=gui
SET HB_VISUALC_VER=60
SET HB_BUILD_MODE=c
SET C_USR= -DHARBOUR_MAIN_WIN -DHB_DYNLIB -DHB_FM_STATISTICS_OFF
SET HB_BUILD_DLL=no
SET HB_MAKE_PROGRAM=c:\vc2008\bin\nmake.exe

if A%1 == A GOTO :BUILD
make_vc %1

:BUILD
make_vc
 


Este mismo fichero BAT hay que copiarlo a la carpeta contrib y modificarlo para que llame a make_vc_all en vez de make_vc. Asi construye todas las librerias de contribuciones.

En un proximo mensaje explicamos como compilar un PRG, a C, a OBJ y reemplazarlo en una libreria.
regards, saludos

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

Re: Migración desde xHarbour+BCC a Harbour+MSVC

Postby Antonio Linares » Sat Feb 28, 2009 8:32 am

Asi se puede, despues de compilar un PRG, generar el OBJ y reemplazarlo en una libreria:

c:\VC2008\bin\cl -c -Ic:\harbour\include -Ic:\VC2008\include file.c
c:\VC2008\bin\Lib MyLib.lib /OUT:MyLib.lib file.obj
regards, saludos

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

Re: Migración desde xHarbour+BCC a Harbour+MSVC

Postby Kleyber » Mon Mar 02, 2009 7:24 pm

Antonio, muchas gracias por el aporte. Voy a testar aqui Harbour+MSVC+FWH y te comento los resultados.

Saludos,
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
User avatar
Kleyber
 
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Re: Migración desde xHarbour+BCC a Harbour+MSVC

Postby Kleyber » Wed Mar 04, 2009 6:46 pm

Antonio,

Bueno, te comento mis resultados. He hecho este bat para la reconstrucción de la lib FIVEHM.LIB:

Code: Select all  Expand view

cls
if exist *.c   del *.c
if exist *.obj del *.obj
if exist *.prg del *.prg

copy \fwh802\source\classes\*.prg
copy \fwh802\source\function\*.prg
copy \fwh\source\function\*.c
copy \fwh802\source\winapi\*.prg
copy \fwh\source\winapi\*.c

if "%CC_DIR%"  == "" set CC_DIR=%ProgramFiles%\Microsoft Visual Studio 9.0\VC

pause
for %%f in (*.prg) do c:\harbour\bin\harbour %%f /n /ic:\fwh\include;c:\harbour\include
pause
for %%f in (*.c)   do "%CC_DIR%\bin\cl" -c -Ic:\harbour\include -I"%CC_DIR%\include" %%f
pause
for %%f in (*.obj) do "%CC_DIR%\bin\Lib" fivehm.lib /OUT:fivehm.lib %%f


Pero no he logrado generar la lib. He notado que durante la compilación, si existe algun erro en un prg o en un c el bat no se detiene y la compilacion continua hasta el final, mismo con los errores mostrados. Que hago mal?

Saludos,
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
User avatar
Kleyber
 
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Re: Migración desde xHarbour+BCC a Harbour+MSVC

Postby Antonio Linares » Wed Mar 04, 2009 7:09 pm

Kleyber,

> Pero no he logrado generar la lib.

La libreria tiene que existir previamente. Tienes que crearla usando un fichero DEF:

lib.exe /def:mylib.def /out:mylib.lib

mylib.def es suficiente con que contenga esto
Code: Select all  Expand view

LIBRARY     MYLIB.LIB

EXPORTS
 


>
He notado que durante la compilación, si existe algun erro en un prg o en un c el bat no se detiene y la compilacion continua hasta el final, mismo con los errores mostrados.
>

habria que ver la forma de usar el errorlevel para detener un for dentro del BAT. Un error genera un errorlevel 1.
regards, saludos

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

Re: Migración desde xHarbour+BCC a Harbour+MSVC

Postby Kleyber » Wed Mar 04, 2009 7:26 pm

Si, verdad, pero no estoy mirando como poner esto. Y es cierto que existen alguns prgs que tienen errores... Desafortunadamente el FIVEHM.LIB y el FIVEHCM.LIB de la versión 8.02 no son compatibles con el VC Express que tengo aqui. Por esto necesito hacer la regeneración de la lib FIVEHM. Lo que hago?

Saludos,
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
User avatar
Kleyber
 
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Re: Migración desde xHarbour+BCC a Harbour+MSVC

Postby Antonio Linares » Wed Mar 04, 2009 9:06 pm

Kleyber,

> no son compatibles con el VC Express

Por que ? Que errores te aparecen ? De enlazado ?
regards, saludos

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

Re: Migración desde xHarbour+BCC a Harbour+MSVC

Postby Kleyber » Wed Mar 04, 2009 10:50 pm

Antonio

Antonio Linares wrote:Por que ? Que errores te aparecen ? De enlazado ?


Exactamente. Intenté compilar el BROWSE.PRG de la carpeta SAMPLES y el resultado es esto:

Code: Select all  Expand view

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ FiveWin for Harbour 8.02 (MSVC++) Fev. 2008      Harbour development power ³Ü
³ (c) FiveTech, 1993-2008     for Microsoft Windows 9X/NT/200X/ME/XP/Vista ³Û
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ
ÿ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
Setting environment for using Microsoft Visual Studio 2008 x86 tools.
Compiling...

..\include\FiveWin.ch(81) Warning W0001  Redefinition or duplicate definition of #define HB_SYMBOL_UNUSED
browse.c
Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1

Copyright (C) Microsoft Corporation.  All rights reserved.


FiveHCM.lib(CURSORS.obj) : warning LNK4006: _HB_FUN_CURSORNO already defined in FiveHM.lib(CONTROL.obj); second definition ignored
hbrtl.lib(tget.obj) : warning LNK4006: _HB_FUN_GETNEW already defined in FiveHM.lib(TCLIPGET.obj); second definition ignored
gtgui.lib(gtgui.obj) : warning LNK4006: _HB_FUN_HB_GT_GUI_DEFAULT already defined in FiveHM.lib(ERRSYSW.obj); second definition ignored
FiveHM.lib(HARBOUR.obj) : error LNK2001: unresolved external symbol _HB_FUN_HB_DBG_VMVARSLEN
FiveHM.lib(HARBOUR.obj) : error LNK2001: unresolved external symbol _HB_FUN_HB_DBG_VMVARLGET
FiveHM.lib(HARBOUR.obj) : error LNK2001: unresolved external symbol _HB_FUN_HB_DBG_VMPARLLIST
FiveHM.lib(HARBOUR.obj) : error LNK2001: unresolved external symbol _HB_FUN_HB_DBG_VMSTKLCOUNT
FiveHCM.lib(CURSORS.obj) : error LNK2019: unresolved external symbol _GetGuiResources referenced in function _HB_FUN_GETGUIRESOURCES
browse.exe : fatal error LNK1120: 5 unresolved externals
* Linking errors *
 


Y el BUILDHM.BAT que tengo es este:

Code: Select all  Expand view

@ECHO OFF
CLS
ECHO ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ECHO ³ FiveWin for Harbour 8.02 (MSVC++) Fev. 2008      Harbour development power ³Ü
ECHO ³ (c) FiveTech, 1993-2008     for Microsoft Windows 9X/NT/200X/ME/XP/Vista ³Û
ECHO ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ
ECHO ÿ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

if A%1 == A GOTO :SINTAX
if NOT EXIST %1.prg GOTO :NOEXIST

REM ***
REM *** Adaptado para uso do FWH & MSVC Express 2008 por Vailton Renato
REM ***
call "%ProgramFiles%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86

if "%CC_DIR%"  == "" set CC_DIR=%ProgramFiles%\Microsoft Visual Studio 9.0\VC
if "%SDK_DIR%" == "" set SDK_DIR=%ProgramFiles%\Microsoft SDKs\Windows\v6.0A
if "%HBDIR%"   == "" set HBDIR=c:\harbour

ECHO Compiling...

if exist %HBDIR%\bin\harbour.exe    set hdir=%HBDIR%\bin
if exist %HBDIR%\bin\vc\harbour.exe set hdir=%HBDIR%\bin\vc

if exist %HBDIR%\lib\hbvm.lib       set hdirl=%HBDIR%\lib
if exist %HBDIR%\lib\vc\hbvm.lib    set hdirl=%HBDIR%\lib\vc

set include=%CC_DIR%\include;%HBDIR%\include;%include%
set lib=%CC_DIR%\lib;%SDK_DIR%\lib;%hdir%\lib;%lib%

"%hdir%\harbour" %1 /n /i..\include;%HBDIR%\include /w /p %2 %3 > comp.log
IF ERRORLEVEL 1 GOTO COMPILEERROR
type comp.log

"%CC_DIR%\bin\cl" -TP -W3 -c /GA %1.c
:ENDCOMPILE

IF EXIST %1.rc "%SDK_DIR%\bin\rc" -r -d__FLAT__ %1

echo %1.obj  > msvc.tmp
echo ..\lib\FiveHM.lib ..\lib\FiveHCM.lib  >> msvc.tmp

echo "%hdirl%\hbrtl.lib"  >> msvc.tmp
echo "%hdirl%\hbvm.lib"  >> msvc.tmp
echo "%hdirl%\gtgui.lib"  >> msvc.tmp
echo "%hdirl%\hblang.lib"  >> msvc.tmp
echo "%hdirl%\hbmacro.lib"  >> msvc.tmp
echo "%hdirl%\hbrdd.lib"  >> msvc.tmp
echo "%hdirl%\rddntx.lib"  >> msvc.tmp
echo "%hdirl%\rddcdx.lib"  >> msvc.tmp
echo "%hdirl%\rddfpt.lib"  >> msvc.tmp
echo "%hdirl%\hbsix.lib"  >> msvc.tmp
echo "%hdirl%\hbdebug.lib"  >> msvc.tmp
echo "%hdirl%\hbcommon.lib"  >> msvc.tmp
echo "%hdirl%\hbpp.lib"  >> msvc.tmp
echo "%hdirl%\hbcpage.lib"  >> msvc.tmp
echo "%hdirl%\hbwin.lib"  >> msvc.tmp

rem Uncomment these two lines to use Advantage RDD
rem echo "%hdirl%\rddads.lib" >> msvc.tmp
rem echo "%hdirl%\ace32.lib" >> msvc.tmp

echo "%CC_DIR%\lib\libcmt.lib"  >> msvc.tmp
echo "%SDK_DIR%\lib\kernel32.lib"  >> msvc.tmp
echo "%SDK_DIR%\lib\user32.lib"    >> msvc.tmp
echo "%SDK_DIR%\lib\gdi32.lib"     >> msvc.tmp
echo "%SDK_DIR%\lib\winspool.lib"  >> msvc.tmp
echo "%SDK_DIR%\lib\comctl32.lib"  >> msvc.tmp
echo "%SDK_DIR%\lib\comdlg32.lib"  >> msvc.tmp
echo "%SDK_DIR%\lib\advapi32.lib"  >> msvc.tmp
echo "%SDK_DIR%\lib\shell32.lib"   >> msvc.tmp
echo "%SDK_DIR%\lib\ole32.lib"     >> msvc.tmp
echo "%SDK_DIR%\lib\oleaut32.lib"  >> msvc.tmp
echo "%SDK_DIR%\lib\uuid.lib"      >> msvc.tmp
echo "%SDK_DIR%\lib\odbc32.lib"    >> msvc.tmp
echo "%SDK_DIR%\lib\odbccp32.lib"  >> msvc.tmp
echo "%SDK_DIR%\lib\iphlpapi.lib"  >> msvc.tmp
echo "%SDK_DIR%\lib\mpr.lib"       >> msvc.tmp
echo "%SDK_DIR%\lib\version.lib"   >> msvc.tmp
echo "%SDK_DIR%\lib\wsock32.lib"   >> msvc.tmp
echo "%SDK_DIR%\lib\msimg32.lib"   >> msvc.tmp

IF EXIST "%1.res" echo "%1.res" >> msvc.tmp

"%CC_DIR%\bin\link" @msvc.tmp /NODEFAULTLIB:LIBC.LIB /nologo /subsystem:windows /force:multiple /NODEFAULTLIB:libcmt

IF ERRORLEVEL 1 GOTO LINKERROR
ECHO * Application successfully built *
%1
GOTO EXIT
ECHO

rem delete temporary files
@del %1.c
@del msvc.tmp

:COMPILEERROR
@type comp.log
ECHO * Compiling errors *
GOTO EXIT

:LINKERROR
ECHO * Linking errors *
GOTO EXIT

:SINTAX
ECHO    SYNTAX: Build [Program]     {-- No especifiques la extensi¢n PRG
ECHO                                {-- Don't specify .PRG extension
GOTO EXIT

:NOEXIST
ECHO The specified PRG %1 does not exist

:EXIT


Que hago ahora?

Saludos,
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
User avatar
Kleyber
 
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 52 guests