Página 1 de 2

Migrando para xHarbour / hbmake

Enviado: 06 Abr 2011 13:14
por Minduim
estou migrando do caclipper para xharbour / hbmake e ao compilar apenas um programa teste são anexadas algumas LIB que não constam da bilbioteca nem xharbour, nem bcc55:
optcon.lib
dbfdbt.lib

alguem pode me orientar

Minduim

Re: Migrando para xHarbour / hbmake

Enviado: 07 Abr 2011 13:10
por gvc
Poste o seu código fonte para que nós façamos os testes.
O DBFDBT deve ser a lib de controle de arquivo MEMO.

Re: Migrando para xHarbour / hbmake

Enviado: 07 Abr 2011 17:45
por Minduim
obrigado pela sua atenção;

o programa teste em questão foi o mais simples possível:

FUNCTION MAIN()
? "TESTE"
RETURN

andei navegando por sites e notei que estas LIB estão presentes nos processos de compilação de outros colegas, mas não constam das
bibliotecas em meu sistema, será que estas LIB constam em versões mais antigas dos compiladores e foram suprimidas na ultima versão?

Amauri

Re: Migrando para xHarbour / hbmake

Enviado: 07 Abr 2011 20:58
por sygecom
Qual versão do xHarbour ? post o script do hbmake (.BC)

Re: Migrando para xHarbour / hbmake

Enviado: 08 Abr 2011 09:46
por Minduim
obrigado pela atenção;

harbour 1.2.1
borland C++ 5.5.1
hbmake 03/04/2004

sintaxe: hbmake teste.bc -ex -f


segue abaixo o contudo do arquivo teste.bc:

#BCC
VERSION=BCB.01
!ifndef BCB
BCB = $(MAKEDIR)
!endif

!ifndef BHC
BHC = $(HMAKEDIR)
!endif

RECURSE= NO

COMPRESS = YES
EXTERNALLIB = NO
XFWH = NO
FILESTOADD = 5
WARNINGLEVEL = 0
USERDEFINE =
USERINCLUDE =
GUI = NO
MT = NO
SRC02 = obj
PROJECT = teste.exe $(PR)
OBJFILES = $(SRC02)\teste.obj $(OB)
PRGFILES = teste.prg $(PS)
OBJCFILES = $(OBC)
CFILES = $(CF)
RESFILES =
RESDEPEN =
TOPMODULE = teste.prg
LIBFILES = optcon.lib bcc640.lib lang.lib vm.lib rtl.lib rdd.lib macro.lib pp.lib dbfntx.lib dbfcdx.lib dbffpt.lib dbfdbt.lib common.lib gtwin.lib codepage.lib
DEFFILE =
HARBOURFLAGS = -m -w0
CFLAG1 = -OS $(CFLAGS) -d -L$(BHC)\lib;$(FWH)\lib -c -I
CFLAG2 = -I$(BHC)\include;$(BCB)\include
RFLAGS =
LFLAGS = -L$(BCB)\lib\obj;$(BCB)\lib;$(BHC)\lib -Gn -M -m -s -Tpe -ap
IFLAGS =
LINKER = ilink32

ALLOBJ = c0x32.obj $(OBJFILES) $(OBJCFILES)
ALLRES = $(RESDEPEN)
ALLLIB = $(LIBFILES) import32.lib cw32.lib
.autodepend

#COMMANDS
.cpp.obj:
$(BCB)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $**

.c.obj:
$(BCB)\BIN\bcc32 -I$(BHC)\include $(CFLAG1) $(CFLAG2) -o$* $**

.prg.obj:
$(BHC)\bin\harbour -n -go -I$(BHC)\include $(HARBOURFLAGS) -o$* $**

.rc.res:
$(BCB)\BIN\brcc32 $(RFLAGS) $<

#BUILD

$(PROJECT): $(CFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE)
$(BCB)\BIN\$(LINKER) @&&!
$(LFLAGS) +
$(ALLOBJ), +
$(PROJECT),, +
$(ALLLIB), +
$(DEFFILE), +
$(ALLRES)
!



Minduim

Re: Migrando para xHarbour / hbmake

Enviado: 25 Abr 2011 13:54
por gvc
Eu uso o xHarbour 1.1.0 e não foi colocado no .BC nenhum desses arquivos que vc informou.
Alias:
hbmake teste.bc -ex (Vc vai criar/editar o arquivo BC)
hbmake teste.bc -f (Compilação forçada. Compila todos os PRG do sistema)

Eu não sei o resultado de colocar os dos parâmetros na mesma linha.

Este é o .BC que o meu sistema criou.

Vc marcou algum parâmetro diferente na hora de montar o arquivo BC?

Código: Selecionar todos

#BCC
VERSION=BCB.01
!ifndef CC_DIR
CC_DIR = $(MAKE_DIR)
!endif

!ifndef HB_DIR
HB_DIR = $(HARBOUR_DIR)
!endif
 
RECURSE= NO 
 
SHELL = 
COMPRESS = NO
EXTERNALLIB = NO
XFWH = NO
FILESTOADD =  5
WARNINGLEVEL =  0
USERDEFINE = 
USERINCLUDE = 
USERLIBS = 
EDITOR = edit
GUI = NO
MT = NO
SRC02 = obj 
PROJECT = teste2.exe $(PR) 
OBJFILES = $(SRC02)\TESTE2.obj $(OB) 
PRGFILES = TESTE2.PRG $(PS) 
OBJCFILES = $(OBC) 
CFILES = $(CF)
RESFILES = 
RESDEPEN = 
TOPMODULE = TESTE2.PRG
LIBFILES = lang.lib vm.lib rtl.lib rdd.lib macro.lib pp.lib dbfntx.lib dbfcdx.lib dbffpt.lib common.lib gtwin.lib codepage.lib ct.lib tip.lib pcrepos.lib hsx.lib hbsix.lib debug.lib 
EXTLIBFILES =
DEFFILE = 
HARBOURFLAGS =  -b  -w0
CFLAG1 =  -OS $(SHELL)  $(CFLAGS) -d -c -L$(HB_DIR)\lib 
CFLAG2 =  -I$(HB_DIR)\include;$(CC_DIR)\include
RFLAGS = 
LFLAGS = -L$(CC_DIR)\lib\obj;$(CC_DIR)\lib;$(HB_DIR)\lib -Gn -M -m -s -Tpe -x -ap
IFLAGS = 
LINKER = ilink32
 
ALLOBJ = c0x32.obj $(OBJFILES) $(OBJCFILES)
ALLRES = $(RESDEPEN)
ALLLIB = $(USERLIBS) $(LIBFILES) import32.lib cw32.lib
.autodepend
 
#DEPENDS
 
#COMMANDS
.cpp.obj:
$(CC_DIR)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $**
 
.c.obj:
$(CC_DIR)\BIN\bcc32 -I$(HB_DIR)\include $(CFLAG1) $(CFLAG2) -o$* $**
 
.prg.obj:
$(HB_DIR)\bin\harbour -D__EXPORT__ -n -go -I$(HB_DIR)\include $(HARBOURFLAGS) -o$* $**
 
.rc.res:
$(CC_DIR)\BIN\brcc32 $(RFLAGS) $<
 
#BUILD
 
$(PROJECT): $(CFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE)
    $(CC_DIR)\BIN\$(LINKER) @&&!  
    $(LFLAGS) +
    $(ALLOBJ), +
    $(PROJECT),, +
    $(ALLLIB), +
    $(DEFFILE), +
    $(ALLRES) 
!

Migrando para xHarbour / hbmake

Enviado: 20 Mai 2011 16:08
por Minduim
obrigado pela atençao;

independente da forma como executo a compilação, o arquivo .bc permanece o mesmo e a mensagem de erro tambem;

creio que os .ddl que o compilador esta pedindo, tem a ver com a versão do windows (7) ou algum periférico acoplado ao equipamento;

você teria como disponibilizar a verção 1.1.0 do xharbour?

Migrando para xHarbour / hbmake

Enviado: 25 Mai 2011 16:39
por gvc
Coloquei na sessão de Download.
Falta a liberação do administrador do forum.

Migrando para xHarbour / hbmake

Enviado: 26 Mai 2011 18:10
por Toledo
gvc escreveu:Falta a liberação do administrador do forum.
Não tem nenhum arquivo para liberação na seção download!

Abraços,

Migrando para xHarbour / hbmake

Enviado: 27 Mai 2011 13:18
por gvc
Mandei novamente. (ou é a primeira. sei lá!)

[Minduim]
Mande um eMial para gvcortez@uol.com.br que eu te envio os arquivos.

[Toledo]
Se não estiver lá novamente, mande-me um eMail que eu te envio os arquivos para vc postar nos download.
Mas desta vez eu imprimi a tela de aviso que diz para aguardar liberação dos moderadores. Eu ainda não estou maluco!!! (só o medico falou que é para tomar 2 azuis e 1 amarelinha todos os dias) eh.eh.eh.

Boa sorte a todos.

Migrando para xHarbour / hbmake

Enviado: 01 Jun 2011 09:01
por Minduim
gvc,

baixei o arquivo que você postou no forum, processei a instalação e executei a compilação do arquivo teste e não apresentou nenhum erro;

entendo que versão que 1.2.1 deve estar algum problema;

ao compilar minha aplicação apareceram alguns comandos não reconhecidos pelo harbour:

com_close()
com_open(0
com_init()
com_dtr()
com_flush()
com_sflush()
com_send()
com_read()
com_num()
numfiles()
filesmax()
osver()
biosdate()
cputype()
pctype()
mensize()
numdiskf()
numdiskh()
numprinter()
stackfree()
csetdefa()

por gentileza, você poderia me orientar em mais esta dificuldade;

novamente agradeço a atenção;

minduim

Migrando para xHarbour / hbmake

Enviado: 01 Jun 2011 18:53
por gvc
Se vc esta compilando o exemplo postado anteriormente, apague todos os arquivos objeto (*.obj) pela versão que vc usava.
Eu costumo mandar compilar forçado para garantir que compila tudo mesmo.
hbmake <arquivo.bc> -f

Isso parece (não sei ao certo) ser funções de uma versão mais nova do xH.

Ah! Nas "Opções do xHarbour" eu costumo marcar "Info. Debug /b". Isso evitou algumas mensagens de erro.

Migrando para xHarbour / hbmake

Enviado: 02 Jun 2011 09:07
por Minduim
gvc,

me perdoe, entendo que não fui claro em minha ultima observação;

a aplicação que apresentou estes comandos não encontrados, são de um programa que estou desenvolvendo;

os comandos apresentados estão relacionados com a verificação e utilização das portas COM , verificação de impressoras e busca de informações da maquina e do sistema operacional;

minduim

Migrando para xHarbour / hbmake

Enviado: 02 Jun 2011 11:50
por Jairo Maia
Olá Minduim,

Não sou experiente em xHarbour/Harbour, sou iniciante. Mas está me parecendo que a lib que vc está usando é 16 bits. Se for isso, mesmo estando declarada em seu script, ela não é lida pelo xHarbour.

Supondo que seja isso, vc precisa usar uma versão atualizada em 32 bits. Se isso não for possível, será necessário usar comandos similares do próprio xHarbour, ou alguma lib substituta.

Por dedução, varias funções faltantes (que vc postou acima) é possível saber o que faz, mas se vc puder explicar a função de cada uma, talvez tenha comandos nativos do xHarbour para substitui-las.

p.ex:
com_close() // Fecha a porta COM
com_open() // Abre a porta COM
etc...

Migrando para xHarbour / hbmake

Enviado: 05 Jun 2011 22:36
por rochinha
Amiguinhos

Minduim
Voce esta desenvolvendo uma aplicação usando xHarbour com codigo totalmente novo e usando somente as bibliotecas do mesmo ou esta re-utilizando código de aplicativo Clipper.

A biblioteca do mundo Harbour que tem comandos de acesso a portas com é chamada de HBCOM. Veja se ela exista na pasta LIB e se esta na criação de seu .BC.

Segiro não usar nenhuma biblioteca do antigo Clipper mesmo que tenham nomes parecidos, pois as mesmas, como já falado anteriormente, são de 16bits.

Em tempo, para saber quais funções e seus nomes constam de uma biblioteca voce pode usar a ExplorerLIB que visualiza arquivos .LIB e mostra os nomes das funções existentes em seu conteúdo, permitindo agregar/retirar .OBJs(não aconselho fazer isto) como os antigos aplicativos TLIB.EXE e MSLIB.EXE.

No pequeno trecho abaixo voce pode ver alguns comandos de manuseio de portas usando as bibliotecas de COMMunicação do Harbour.

Código: Selecionar todos

/////////////////////////////////////////////////////////////////////////////
//
// SAT - Funcoes Compativeis com SAT
//
//         Autor: Jose Carlos da Rocha
//          Data: 12/06/2010
//         Email: contato@5volution.com.br
//           MSN: fivolution@hotmail.com
//     Linguagem: xBase
//       Prefixo: SAT_
//   Plataformas: DOS, Windows
// Requerimentos: Harbour/xHarbour( Para uso com Clipper eliminar Prefixo )
//     Protocolo:
//       ESC.00 : Inicio da Comunicacao
//       ESC.I  : Inicio da Transmissao
//       S04    : Conteudo, comandos
//       ESC.F  : Fim da Transmissao
//       ESC.99 : Fim da Comunicacao
//
/////////////////////////////////////////////////////////////////////////////
#include "Fivewin.ch" 

FUNCTION MAIN( cComm ) 
    LOCAL oDlg 
    LOCAL oGet, cTxt := "" 
    LOCAL nCom 
    DEFAULT cComm := "COM5"
    DEFINE DIALOG oDlg; 
           SIZE 500, 500; 
           TITLE "S@T ("+cComm+")"
    @ 0, 0 GET oGet VAR cTxt MEMO READONLY 
    oGet:bKeyDown = { | nKey | Tasti( nCom, nKey ) } 
    ACTIVATE DIALOG oDlg ; 
             ON INIT ( oGet:AdjClient(),; 
                       nCom := APRICOM( oDlg, oGet, cComm ),; 
                       IF( nCom < 0, oDlg:End(), ) ); 
             CENTER 
    IF nCom >= 0; CLOSECOMM( nCom ); ENDIF 
    RETURN NIL 

STATIC FUNCTION TASTI( nCom, nKey ) 
    SENDSTR( nCom, CHR( nKey ) ) 
    RETURN NIL 

STATIC FUNCTION APRICOM( oDlg, oGet, cComm ) 
    LOCAL nCom, cDcb 
    BEGIN SEQUENCE 
        nCom = OPENCOMM( cComm, 16384, 16384 ) 
        IF nCom < 0 
            oGet:Append( "Erro de abertura da porta de comunicacao." )
            BREAK 
        ENDIF 
        BUILDCOMMDCB( cComm+":115200,N,8,1", @cDcb ) 
        IF !SETCOMMSTATE( nCom, cDcb ) 
            oGet:Append( "Erro de configuracao da porta de comunicacao." )
            BREAK 
        ENDIF 
        oDlg:bCommNotify = { | nCom | Connect( nCom, oGet ),; 
                                      EnableCommNotification( nCom, oDlg:hWnd, 1, -1 ) } 
        IF !ENABLECOMMNOTIFICATION( nCom, oDlg:hWnd, 1, -1 ) 
            oGet:Append( "Erro de abilitacao de notificacao." )
            BREAK 
        ENDIF 
    RECOVER 
        nCom = -1 
    END SEQUENCE 
    RETURN nCom 

STATIC FUNCTION CONNECT( nCom, oGet ) 
    LOCAL cStr 
    ENABLECOMMNOTIFICATION( nCom, 0, 1, -1 ) 
    cStr = RECEIVESTR( nCom ) 
    cStr = STRTRAN( cStr, CHR( 13 ), "" ) 
    cStr = STRTRAN( cStr, CHR( 10 ), CRLF ) 
    oGet:Append( cStr ) 
    RETURN NIL 

STATIC FUNCTION SENDSTR( nCom, cString ) 
    LOCAL nBytes := WRITECOMM( nCom, cString ) 
    RETURN nBytes = LEN( cString ) 

STATIC FUNCTION RECEIVESTR( nCom ) 
    LOCAL cBuf := SPACE( 1000 ) 
    RETURN LEFT( cBuf, READCOMM( nCom, @cBuf ) )
Isto faz parte de um projeto experimental onde simulei um ambiente S@T-Fiscal.