Página 3 de 3

Re: HBQT compilação com Harbour

Enviado: 24 Jan 2011 19:23
por chrissoares
Obrigado Toledo,

Compilou sem as mensagens na parte da QT, muito obrigado.

Estou agora tentando compilar um exemplo. Fiz um teste com o exemplo do Stanis para ver Videos do Youtube e não consegui compilar também. Utilizei a mesma configuração de ambiente so alterando a path para c:\hbmgw\bin onde era c:\harbour\bin.
Compilei com:

Código: Selecionar todos

hbmk2 youtube.hbp
Gerou os seguintes erros:

Código: Selecionar todos

D:\Sistemas\youtube-src>hbmk2 youtube.hbp
hbmk2: Processando op‡äes do ambiente: -compiler=mingw
hbmk2: Harbour: Compilando m¢dulos...
Harbour 2.1.0rc1 (Rev. 16094)
Copyright (c) 1999-2011, http://harbour-project.org/
Compiling 'Main.ui'...
Main.ui(1) Error E0030  Syntax error "syntax error at '<'"
Main.ui(2) Error E0030  Syntax error "syntax error at '<'"
Main.ui(3) Error E0030  Syntax error "syntax error at '<'"
Main.ui(4) Error E0030  Syntax error "syntax error at '<'"
Main.ui(5) Error E0030  Syntax error "syntax error at '<'"
Main.ui(6) Error E0030  Syntax error "syntax error at '<'"
Main.ui(7) Error E0030  Syntax error "syntax error at '<'"
Main.ui(8) Error E0030  Syntax error "syntax error at '<'"
Main.ui(9) Error E0030  Syntax error "syntax error at '<'"
Main.ui(10) Error E0030  Syntax error "syntax error at '<'"
Main.ui(11) Error E0030  Syntax error "syntax error at '<'"
Main.ui(12) Error E0030  Syntax error "syntax error at '<'"
Main.ui(13) Error E0030  Syntax error "syntax error at '<'"
Estes erros acredito que sejam porque foi colocado no arquivo de makefile o arquivo .ui com as fererências da tela.

Compilando com:

Código: Selecionar todos

hbmk2 youtube.prg
Gera os seguintes erros:

Código: Selecionar todos

hbmk2: Processando op‡äes do ambiente: -compiler=mingw
Harbour 2.1.0rc1 (Rev. 16094)
Copyright (c) 1999-2011, http://harbour-project.org/
Compiling 'youtube.prg'...
Lines 872, Functions/Procedures 10
Generating C source output to 'C:\DOCUME~1\CHRIST~1.WSO\CONFIG~1\Temp\hbmk_t1wux
3.dir\youtube.c'... Done.
C:/DOCUME~1/CHRIST~1.WSO/CONFIG~1/Temp/hbmk_t1wux3.dir/youtube.o:youtube.c:(.dat
a+0x1b8): undefined reference to `HB_FUN_QAPPLICATION'
C:/DOCUME~1/CHRIST~1.WSO/CONFIG~1/Temp/hbmk_t1wux3.dir/youtube.o:youtube.c:(.dat
a+0x1d8): undefined reference to `HB_FUN_QRESOURCE'
C:/DOCUME~1/CHRIST~1.WSO/CONFIG~1/Temp/hbmk_t1wux3.dir/youtube.o:youtube.c:(.dat
a+0x208): undefined reference to `HB_FUN_HBQTRES_RES'
C:/DOCUME~1/CHRIST~1.WSO/CONFIG~1/Temp/hbmk_t1wux3.dir/youtube.o:youtube.c:(.dat
a+0x258): undefined reference to `HB_FUN_HBQTUI_MAIN'
C:/DOCUME~1/CHRIST~1.WSO/CONFIG~1/Temp/hbmk_t1wux3.dir/youtube.o:youtube.c:(.dat
a+0x3d8): undefined reference to `HB_FUN_TIPCLIENTHTTP'
C:/DOCUME~1/CHRIST~1.WSO/CONFIG~1/Temp/hbmk_t1wux3.dir/youtube.o:youtube.c:(.dat
a+0x3f8): undefined reference to `HB_FUN_MSGINFO'
C:/DOCUME~1/CHRIST~1.WSO/CONFIG~1/Temp/hbmk_t1wux3.dir/youtube.o:youtube.c:(.dat
a+0x4c8): undefined reference to `HB_FUN_QURL'
collect2: ld returned 1 exit status
hbmk2: Erro: Executando linkeditor. 1
gcc.exe C:/DOCUME~1/CHRIST~1.WSO/CONFIG~1/Temp/hbmk_t1wux3.dir/youtube.o C:/DOCU
ME~1/CHRIST~1.WSO/CONFIG~1/Temp/hbmk_t1wux3.dir/hbmk_mg7e2n.o    -mconsole -Wl,-
-start-group -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -lgt
pca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrdd
cdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcomm
on -lhbmainstd -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -lwinspool -lcomc
tl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm
32 -lmsimg32 -lwininet -lhbpcre -lhbzlib  -Wl,--end-group -oyoutube.exe  -Lc:/hb
mgw/lib/win/mingw -Lc:/hbmgw/bin
Nessa parte eu não entendi. Ele esta procurando dentro do diretório Temp que o Windows mantem, é assim mesmo, não deveria ser no diretório atual ? Os erros acusam que esta faltando as referências para as classes e funções.

Abaixo esta a configuração do meu ambiente.

Código: Selecionar todos

SET PATH=%PATH%;c:\mingw\bin;c:\hbmgw\bin;C:\Qt\2010.05\qt\bin;C:\Qt\2010.05\qt\include;C:\hbmgw\include
SET INCLUDE=%INCLUDE%;c:\mingw\include;c:\hbmgw\include
SET LIB=%LIB%;c:\mingw\lib;c:\hbmgw\lib
SET HB_PATH=c:\hbmgw
SET HRB_DIR=c:\hbmgw
set HB_COMPILER=mingw
set HB_WITH_QT=C:\Qt\2010.05\qt\include
Obrigado pela ajuda de todos!

Re: HBQT compilação com Harbour

Enviado: 24 Jan 2011 19:52
por Toledo
chrissoares escreveu:Fiz um teste com o exemplo do Stanis para ver Videos do Youtube e não consegui compilar também.
Estes exemplos do Stanis foi desenvolvido para compilação no Linux, então para compilar no Windows, no arquivo HBP tem que serem feitas algumas alterações:

Editar o arquivo YOUTUBE.HBP procure por:

Código: Selecionar todos

/usr/src/harbour/contrib/hbqt/hbqt.hbc
/usr/src/harbour/contrib/hbtip/hbtip.hbc
e troque por:

Código: Selecionar todos

c:\harbour\contrib\hbqt\hbqt.hbc
c:\harbour\contrib\hbtip\hbtip.hbc
Para compilar, use o comando: HBMK2 YOUTUBE.HBP
chrissoares escreveu:Estes erros acredito que sejam porque foi colocado no arquivo de makefile o arquivo .ui com as fererências da tela.
Não existe nada de errado em colocar o arquivo .UI no arquivo HBP. Na hora da compilação será criado um arquivo PRG temporário com a tela que está no arquivo .UI, ai sim é feita a compilação da mesma.

Abraços,

Re: HBQT compilação com Harbour

Enviado: 24 Jan 2011 20:05
por chrissoares
Mais uma vez obrigado Toledo,

Você estava certo, com tantas instalações de desinstalações até conseguir compilar, eu deixei no arquivo um caminho de uma instalação antiga, a primeira que eu já tinha. Depois que corrigir para o local correto, compilou um pouco mais mas ainda deu um erro.

Código: Selecionar todos

D:\Sistemas\youtube-src>hbmk2 youtube.hbp
hbmk2: Processando op‡äes do ambiente: -compiler=mingw
hbmk2: Linkando... youtube.exe
.hbmk/win/mingw/youtube.o:youtube.c:(.data+0x3f8): undefined reference to `HB_FU
N_MSGINFO'
collect2: ld returned 1 exit status
hbmk2: Erro: Executando linkeditor. 1
gcc.exe .hbmk/win/mingw/youtube.o .hbmk/win/mingw/rcc_res.o .hbmk/win/mingw/uic_
Main.o .hbmk/win/mingw/_hbmkaut.o .hbmk/win/mingw/_hbmkcpp.o    -mwindows -Wl,--
start-group -lsupc++ -lhbqtcore -lQtCore4 -lhbqtgui -lQtGui4 -lhbqtdesigner -lQt
Designer4 -lhbqtnetwork -lQtNetwork4 -lhbqtuitools -lQtUiTools -lhbqtwebkit -lQt
WebKit4 -lhbtip -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -
lgtpca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -l
rddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbc
ommon -lhbmainwin -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -lwinspool -lc
omctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -l
imm32 -lmsimg32 -lwininet -lhbpcre -lhbzlib  -Wl,--end-group -oyoutube.exe  -Lc:
/hbmgw/lib/win/mingw -Lc:/hbmgw/bin -LC:/Qt/4.7.1/lib
Mas esse eu consegui descobrir, estava faltando o arquivo util.prg no youtube.hbp

O meu arquivo youtube.hpb ficou assim:

Código: Selecionar todos

-inc
-w3 -es2
-oyoutube
-gui

c:\harbour\contrib\hbqt\hbqt.hbc
c:\harbour\contrib\hbtip\hbtip.hbc

youtube.prg util.prg

Main.ui

res.qrc
Obrigado pela ajuda, agora vou estudar ele um pouco. Pretendo passar minha aplicação que hoje esta em xHarbour no modo console para Windows e estou estudando duas opções Fivewin e a Mingw com QT.

Muito obrigado pela ajuda! Tenha uma ótima noite!
:))

So um ultimo detalhe, onde eu encontro as DLL's necessárias para rodar a aplicação ?
Essas DLL's terão de ser enviadas junto com a aplicação, não existe como compilar sem precisar delas ?

Re: HBQT compilação com Harbour

Enviado: 24 Jan 2011 20:26
por Toledo
chrissoares escreveu:So um ultimo detalhe, onde eu encontro as DLL's necessárias para rodar a aplicação ?
As DLLs você vai encontrar na pasta C:\Qt\2010.05\qt\bin.
chrissoares escreveu:Essas DLL's terão de ser enviadas junto com a aplicação, não existe como compilar sem precisar delas ?
Com a versão GPL (ou LGPL) da QT (que é esta que estamos usando) você tem que enviar as DLLs juntas com o executável da sua aplicação.
Agora, com a versão Comercial da QT, o envio das DLLs não seria necessário.

Abraços,

Re: HBQT compilação com Harbour

Enviado: 24 Jan 2011 21:03
por Toledo
chrissoares escreveu:Pretendo passar minha aplicação que hoje esta em xHarbour no modo console para Windows e estou estudando duas opções Fivewin e a Mingw com QT.
Atenção: é bom lembrar que a QT (não comercial) está sob a licença da LGPL 2.1, que tem uma série de restrições quando a distribuição das aplicações desenvolvidas com base nas bibliotecas da QT. Veja o link abaixo:

http://creativecommons.org/licenses/LGP ... galcode.pt

Veja também:
https://pctoledo.org/forum/viewto ... 590#p63590

Abraços,

Re: HBQT compilação com Harbour

Enviado: 26 Jan 2011 08:56
por chrissoares
Verifiquei este detalhe da QT e no meu caso, tornou o seu uso inviável pois ainda não desejamos compartilhar os fontes dos nossos sistemas com nossos clientes e segundo a LGPL 2.1, é o que deve ser feito:
Por exemplo, se você distribuir cópias da biblioteca, seja gratuitamente ou mediante um valor, terá de conceder a seus receptores todos os direitos que estamos concedendo a você. Você terá de garantir que eles, também, recebam ou possam obter o código-fonte. Se você ligar outro código com a biblioteca, você deve fornecer os arquivos-objeto completos para os receptores, de modo que eles possam ligá-los novamente com a biblioteca após terem feito mudanças na biblioteca e recompilado a mesma. E você terá de exibir a eles esses termos, para que eles conheçam seus direitos.
Texto extraído de http://creativecommons.org/licenses/LGP ... galcode.pt
E no momento não é viável o investimento na versão Comercial, esta muito cara. Vejam em http://shop.qt.nokia.com/us/product-licenses.html.
Bom, fico de certa forma decepcionado, pois sei que a utilização da QT seria uma garantia de Longevidade aos meus sistemas, vou tentar outras opções como o Fivewin.
Obrigado ao Toledo e os demais pelas dicas que me ajudaram muito.

Re: HBQT compilação com Harbour

Enviado: 26 Jan 2011 15:23
por marcosgambeta
chrissoares,

Ainda é cedo para desistir, pois há um grande equívoco no entendimento da licença. Um programa, ao ser compilado, pode usar as bibliotecas do Qt Framework de duas maneiras:

1) dinâmicamente linkada

2) estaticamente linkada

O primeiro caso é quando você usa em forma de .dll. O código do Qt Framework não vai no seu software, mas fica na dll e seu programa chama as rotinas dela.

O segundo caso é quando você compila seu software, incluindo na compilação o código do Qt Framework. Neste caso, seu software e o Qt Framework se tornam um executável só.

A licença LGPL trata os dois casos de forma diferente. Veja o ítem 5 (primeira parte):
Um programa que não contenha nenhum derivativo de qualquer parte da Biblioteca, mas que seja desenhado para operar com a Biblioteca ao ser compilado ou ligado a ela, é chamado de uma "obra que usa a Biblioteca". Essa obra, isoladamente, não é uma obra derivada da Biblioteca e, portanto, fica de fora do âmbito desta Licença.
Isto significa que se seu software usa o Qt Framework dinâmicamente, não está sob a obrigação de seguir os termos da licença LGPL.

Agora veja a segunda parte do ítem 5:
Entretanto, a ligação de uma "obra que usa a Biblioteca" com a Biblioteca constitui um executável que é um derivado da Biblioteca (pois contém partes da Biblioteca), e não uma "obra que usa a Biblioteca". O executável é, assim, coberto por esta Licença. A Cláusula 6 estabelece os termos para a distribuição desses executáveis.
Este caso se refere ao uso do Qt Framework de forma estática. Ou seja, seu software e o Qt Framework são compilados de forma a se tornarem um único executável. Neste caso, o seu software deve seguir os termos da licença LGPL. Aqui entram os termos do ítem 6 da licença.

Resumindo: basta distribuir seu software junto com as dlls do Qt Framework, que não haverá problema algum com a licença.

Eu usei o termo dll, mas vale para outros sistemas operacionais também. O Linux usa .so como extensão para as bibliotecas dinâmicas, mas o princípio é o mesmo.

A hbqt usa a mesma licença do Harbour: GPL com excessão para a criação de executáveis. Então, não há problemas em usá-la dinâmicamente ou estaticamente.

Re: HBQT compilação com Harbour

Enviado: 26 Jan 2011 15:54
por marcosgambeta
chrissoares escreveu:Verifiquei este detalhe da QT e no meu caso, tornou o seu uso inviável pois ainda não desejamos compartilhar os fontes dos nossos sistemas com nossos clientes e segundo a LGPL 2.1, é o que deve ser feito:
Por exemplo, se você distribuir cópias da biblioteca, seja gratuitamente ou mediante um valor, terá de conceder a seus receptores todos os direitos que estamos concedendo a você. Você terá de garantir que eles, também, recebam ou possam obter o código-fonte. Se você ligar outro código com a biblioteca, você deve fornecer os arquivos-objeto completos para os receptores, de modo que eles possam ligá-los novamente com a biblioteca após terem feito mudanças na biblioteca e recompilado a mesma. E você terá de exibir a eles esses termos, para que eles conheçam seus direitos.
Texto extraído de http://creativecommons.org/licenses/LGP ... galcode.pt
Aqui está falando sobre o código do Qt Framework (a biblioteca mencionada nos termos da licença). No caso do seu software que estivesse ligado à biblioteca, você teria de fornecer os arquivos-objeto (não o código fonte), de forma que os usuários pudessem gerar um novo executável caso fizesem alguma alteração na biblioteca (no caso, o Qt Framework).

Quando se usa o Qt Framework dinâmicamente, é possível modificar o Qt Framework (atualizar para uma nova versão ou alterar e recompilar) sem precisar gerar novamente o executável do seu software.

Mas quando se usa estaticamente, então deve-se fornececer, no mínimo, os arquivos-objeto do seu software para que um novo executável possa ser gerado no caso de alguma modificação na biblioteca (o Qt Framework).

Espero que não dê nó na cabeça de ninguém.

Re: HBQT compilação com Harbour

Enviado: 26 Jan 2011 19:53
por Toledo
Olá Marcos, obrigado pelo esclarecimento, eu estou com um programa bem adiantado e estava desistindo exatamente por não estar entendendo direito estas restrições no uso da QT.

Abraços,

Re: HBQT compilação com Harbour

Enviado: 04 Fev 2011 09:24
por chrissoares
Bom dia a todos!
Resumindo: basta distribuir seu software junto com as dlls do Qt Framework, que não haverá problema algum com a licença.
Muito Obrigado Marcos, eu já havia decidido parar de estudar a ferramenta, mas você deixou mais claro para nós a questão das licenças.
Vou continuar estudando seu uso e a dificuldade que terei para converter um sistema, atualmente em xHarbour 1.2.1 modo Console, para uma interface Grafica.

Abraços!