Como criar LIB de funções usando a IDE HMG 3

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Como criar LIB de funções usando a IDE HMG 3

Mensagem por NiltonGM »

Amigos,

Como criar minha LIB com minhas funções compilando com Harbour e usa-las no projeto usando HMG-IDE UNICODE 1.0.6?

Grato
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Como criar LIB de funções usando a IDE HMG 3

Mensagem por Pablo César »

Oi Nilton,

Quando falamos de IDE, apenas é uma ferramenta para compilação ou para elaboração de formulários, relatórios ou manutenção de DBFs na HMG.

Você pode criar um prg con as funções que o projeto iria utilizar. O mesmo se aplica com o arquivo de biblioteca, só que em HMG esse arquivo tem extensão .a e não .lib.

Então deve ser criada com o compilado MiniGW e não com BCC como normalmente é usado com Minigui Extended.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Como criar LIB de funções usando a IDE HMG 3

Mensagem por NiltonGM »

Oi Pablo,

Estou colocando minhas funções em um prg tipo utilitarios.prg, a medida que projeto vai crescendo está ficando complicado manter um monte de prg só de funções na IDE módulos, eu queria compilar cada função em um prg e agrupar em uma só lib, como eu crio a MinhaLib.a ?
No clipper após compilar os PRG's eu usava o FLIB.EXE para juntar os OBJ em uma LIB. Como faço isso no HMG?
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Como criar LIB de funções usando a IDE HMG 3

Mensagem por Toledo »

Olá Nilton, para criar a sua própria LIB faça o seguinte:

1 - Criar um arquivo COMPLIB.BAT com o seguinte conteúdo:

@echo off
SET HMGPATH=C:\hmg.3.3.1
SET PATH=%HMGPATH%\harbour\bin;%HMGPATH%\mingw\bin;%PATH%
hbmk2 %1 -i%HMGPATH%\include
echo.
pause


2 - Criar um arquivo HBP (por exemplo: minhalib.hbp ) com o seguinte conteúdo:

-hblib
-onomedalib
-Iinclude
-w2 -es2

arquivo1.prg
arquivoN.prg


Onde está nomedalib troque pelo nome que você quer dar para a sua lib e onde está arquivo1.prg e arquivoN.prg você vai relacionar o(s) arquivo(s) PRG da sua LIB.

3 - Para compilar, digite:

COMPLIB minhalib.hbp

Depois copie o arquivo *.a (libminhalib.a) para a pasta LIB da HMG.

4 - Na IDE, abra o seu projeto e incluir na aba configuration:

libs=minhalib

Depois é só compilar o projeto.

Abraços,

Tags: hblib
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Como criar LIB de funções usando a IDE HMG 3

Mensagem por NiltonGM »

É disso que estou falando! rs
Valeu Toledo e muito obrigado. :))
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Como criar LIB de funções usando a IDE HMG 3

Mensagem por NiltonGM »

Só mais uma dúvida Toledo ou Pablo, ao compilar os prg's da lib, ocorre o erro "Warning W0001 Ambiguous reference 'aqui aparece a variável não declarada (publica ou private do Main.prg)'
No clipper usamos o parâmetro -m para compilar ignorando esse erro, como faço em Harbour?
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Como criar LIB de funções usando a IDE HMG 3

Mensagem por NiltonGM »

Amigos,

Resolvido, coloquei a velha declaração Menvar-> em todas as variáveis paraquedistas.
Lib criada com byte sucesso!

Abraços
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
jartos
Usuário Nível 1
Usuário Nível 1
Mensagens: 14
Registrado em: 18 Dez 2014 12:34
Localização: sp-sp

Como criar LIB de funções usando a IDE HMG 3

Mensagem por jartos »

Bom dia Mestres. Andei mais um pouco. Talvez agora tenha que postar no outro topico pois a duvida é sobre criar a lib .a Criei os arquivos conforme a explicacao do PC Toledo em seu topico ( viewtopic.php?f=45&t=15398&hilit=hblib#p90764 ) e deu o seguinte erro:

C:\hmg.3.0.35\LIB\mylib>hbmk2 htor2.hbp -iC:\hmg.3.0.35\include
hbmk2: Processando arquivo de configuração: C:\hmg.3.0.35\harbour\bin\hbmk.cfg
Not yet supported command line option: t
Error F0034 Bad command line option 'htorlib'
hbmk2: Erro: Executando o compilador Harbour (interno): 1
(C:\hmg.3.0.35\harbour\bin\harbour.exe) -n1 LOCKS.PRG L_HELP.PRG L_HELPMU.PRG L_
LBEEP.PRG L_LBLANK.PRG L_LBOX.PRG L_LBRO.PRG L_LCABPR.PRG L_LCLEAR.PRG L_LCOLOR.
PRG L_LDELAY.PRG L_LDTX.PRG L_LERRO.PRG L_LERROB.PRG L_LERROC.PRG L_LERROI.PRG L
_LEXT.PRG L_LFUNC.PRG L_LGET.PRG L_LGETAD.PRG L_LHELP.PRG L_LMENU.PRG L_LMENUB.P
RG L_LMSG24.PRG L_LMULT.PRG L_LMULTH.PRG L_LPAGIN.PRG L_LPRINT.PRG L_LRECAL.PRG
L_LREL.PRG L_LREWR.PRG L_LSEEK.PRG L_LSEMA.PRG L_LSENHA.PRG L_LTECLA.PRG L_LTELA
.PRG L_LUPDW.PRG L_LVALPA.PRG L_LVDATE.PRG -htorlib -w2 -es2 -iC:/hmg.3.0.35/har
bour/include -iinclude -iC:/hmg.3.0.35/include

Onde estou errando ? O Que é a opção T que se refere o erro ?
arquivo .hbp esta assim:
-hblib
-htorlib
-Iinclude
-w2 -es2

LOCKS.PRG
L_HELP.PRG
L_HELPMU.PRG
L_LBEEP.PRG
L_LBLANK.PRG
L_LBOX.PRG
Clipeiro a mais de 30 anos.Ainda chamando Harbour de "Senhor". Meu perfil no linkedin ->https://br.linkedin.com/pub/jarbas-torelli/29/691/ba9
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Como criar LIB de funções usando a IDE HMG 3

Mensagem por Toledo »

jartos escreveu:Onde estou errando ?
Amigo, faça o seguinte no seu arquivo HBP:

Procure por: -htorlib

e troque por: -otorlib

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
jartos
Usuário Nível 1
Usuário Nível 1
Mensagens: 14
Registrado em: 18 Dez 2014 12:34
Localização: sp-sp

Como criar LIB de funções usando a IDE HMG 3

Mensagem por jartos »

Muito bom PC Toledo.Resolvido o T. Agora já deu outro erro.
Tenho algumas variáveis declaradas como Private . O compilador não gostou.

Harbour 2.0.0 (Rev. 13372)
Copyright (c) 1999-2010, http://www.harbour-project.org/
Compiling 'LOCKS.PRG'...
LOCKS.PRG(17) Warning W0001 Ambiguous reference 'AREA'
LOCKS.PRG(31) Warning W0001 Ambiguous reference 'AREA'
LOCKS.PRG(47) Warning W0001 Ambiguous reference 'AREA'
LOCKS.PRG(72) Warning W0001 Ambiguous reference 'AREA'
LOCKS.PRG(98) Warning W0001 Ambiguous reference 'AREA'
100
No code generated.
hbmk2: Erro: Executando o compilador Harbour (interno): 1
(C:\hmg.3.0.35\harbour\bin\harbour.exe) -n1 LOCKS.PRG L_HELP.PRG L_HELPMU.PRG L_
LBEEP.PRG L_LBLANK.PRG L_LBOX.PRG L_LBRO.PRG L_LCABPR.PRG L_LCLEAR.PRG L_LCOLOR.
PRG L_LDELAY.PRG L_LDTX.PRG L_LERRO.PRG L_LERROB.PRG L_LERROC.PRG L_LERROI.PRG L
_LEXT.PRG L_LFUNC.PRG L_LGET.PRG L_LGETAD.PRG L_LHELP.PRG L_LMENU.PRG L_LMENUB.P
RG L_LMSG24.PRG L_LMULT.PRG L_LMULTH.PRG L_LPAGIN.PRG L_LPRINT.PRG L_LRECAL.PRG
L_LREL.PRG L_LREWR.PRG L_LSEEK.PRG L_LSEMA.PRG L_LSENHA.PRG L_LTECLA.PRG L_LTELA
.PRG L_LUPDW.PRG L_LVALPA.PRG L_LVDATE.PRG -w2 -es2 -iC:/hmg.3.0.35/harbour/incl
ude -iinclude -iC:/hmg.3.0.35/include
Clipeiro a mais de 30 anos.Ainda chamando Harbour de "Senhor". Meu perfil no linkedin ->https://br.linkedin.com/pub/jarbas-torelli/29/691/ba9
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Como criar LIB de funções usando a IDE HMG 3

Mensagem por Toledo »

jartos escreveu:Tenho algumas variáveis declaradas como Private . O compilador não gostou.
Amigo, veja a 6ª e 7ª mensagem (acima) deste tópico.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
jartos
Usuário Nível 1
Usuário Nível 1
Mensagens: 14
Registrado em: 18 Dez 2014 12:34
Localização: sp-sp

Como criar LIB de funções usando a IDE HMG 3

Mensagem por jartos »

Finalmente consegui Toledo! Só nao entendi porque as variáveis private tiveram que mudar para memvar. Tenho outra questão agora. Algumas funções da minha lib estão escritas em linguagem "C" , como faço para compilar junto na lib?


Sds,,,
Clipeiro a mais de 30 anos.Ainda chamando Harbour de "Senhor". Meu perfil no linkedin ->https://br.linkedin.com/pub/jarbas-torelli/29/691/ba9
Avatar do usuário
jartos
Usuário Nível 1
Usuário Nível 1
Mensagens: 14
Registrado em: 18 Dez 2014 12:34
Localização: sp-sp

Como criar LIB de funções usando a IDE HMG 3

Mensagem por jartos »

Boa tarde mestres, preciso de vossa ajuda para colocar funções criadas em "C" em minha lib .a

Como devo proceder?
tenho os .obj e os fontes em "C"

EX:
#include "extend.h"
#include "bios.h"

CLIPPER l_isprn(void);

CLIPPER l_isprn()
{
unsigned dados;
_retl(_bios_printer(_PRINTER_STATUS,_parni(1)-1,dados)==0x90);
}
Clipeiro a mais de 30 anos.Ainda chamando Harbour de "Senhor". Meu perfil no linkedin ->https://br.linkedin.com/pub/jarbas-torelli/29/691/ba9
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Como criar LIB de funções usando a IDE HMG 3

Mensagem por NiltonGM »

Olá Jartos,

Essa você tirou do fundo do baú, me lembro vagamente a milhares de anos atrás quando compilava com Summer 87, um amigo criava em C os OBJ's e eu linkava, mas não consigo mais me lembrar como fazia isso, talvez não me lembre porque era algo simples como linkar o OBJ em "C" como um OBJ qualquer em clipper, posso estar errado.
Agora como linkar um OBJ com HMG não faço a menor ideia. Vamos aguardar uns feras aí do forum pra nos dizer.

Abraços.
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Como criar LIB de funções usando a IDE HMG 3

Mensagem por Pablo César »

Olá Jarbas,

Essa função _bios_printer como o nome indica deve verificar se a impressora está disponível e o faz através do INTerrupt 17.
Só queria esclarecer que esse tipo de verificação nos atuais sistemas operacionais (versão do Windows), não utilizam mais.
Na minha opinião, o conceito de direcionamento para impressão é feito de forma diferente que era antigamente. Portanto, acredito que não seja mais necessário fazer essa verificação. Por isso deverá avaliar a utilidade de cada função.

A ideia mais aceita na programação utilizando os novos SO é criar arquivos, sejam eels gráficos ou arquivo texto para posteriormente encaminhar para a fila de impressão.

Think about it !
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Responder