Página 1 de 1
Erro ao compilar - undefined reference to 'hb_itemEqual'
Enviado: 28 Ago 2015 11:17
por Duda 'Sgluber'
Amigos,
resolvi experimentar a HwGUI. É a minha primeira tentativa.
Baixei e descompactei a versão mais recente: hwgui-2.19-b4.src.zip
Criei as libs usando o HBMK2, nenhum problema:
Código: Selecionar todos
hbmk2 hwgui.hbp procmisc.hbp hbxml.hbp hwgdebug.hbp
hbmk2: Criando biblioteca estáticas... lib\libhwgui.a
hbmk2: Criando biblioteca estáticas... lib\libprocmisc.a
hbmk2: Criando biblioteca estáticas... lib\libhbxml.a
hbmk2: Criando biblioteca estáticas... lib\libhwgdebug.a
Para evitar alteração no PATH, copiei as 4 libs criadas e o conteúdo da pasta include da HwGUI para as respectivas pastas do Harbour.
Para o primeiro teste, decidi compilar o primeiro e modesto programa disponível no próprio tutorial da HwGUI:
Código: Selecionar todos
// Every HwGUI application must include hwgui.ch header file
#include "hwgui.ch"
Function Test
Local oMain
// Most of GUI applications creates the main window:
INIT WINDOW oMain MAIN TITLE "My First HwGUI sample" AT 100, 100 SIZE 400, 300
/* Here you can place definitions of menu and window controls
* Then the window must be activated - it appears on the screen
* and the application goes to the main loop of handling messages.
*/
ACTIVATE WINDOW oMain
Return Nil
Dei a este programa o nome de HWGUITES.prg e compilei usando as 4 libs:
Código: Selecionar todos
hbmk2 -lhwgui -lprocmisc -lhwgdebug -lhbxml hwguites.prg
Erro na compilação (apenas a linha com o erro, pra evitar poluição visual):
Código: Selecionar todos
c:/hb30/lib/win/mingw/libhwgui.a(drawtext.o):drawtext.c:(.text+0x2e): undefined
reference to `hb_itemEqual'
Deve ser algo simples, mas pra não perder muito tempo, enquanto eu procuro a possível causa do erro estou criando este tópico para pedir uma rápida ajuda...
obrigado antecipadamente! 
Erro ao compilar - undefined reference to 'hb_itemEqual'
Enviado: 28 Ago 2015 12:20
por asimoes
eu não estou usando a hwgui atual, estou esperando estabilizar.
Essa função fica no fonte misc.c
BOOL hb_itemEqual( PHB_ITEM pItem1, PHB_ITEM pItem2 )
No changelog tem essa informação:
! added hb_itemEqual for xharbour
qual a versão de harbour você está compilando: 3.2 ou 3.4?
Erro ao compilar - undefined reference to 'hb_itemEqual'
Enviado: 28 Ago 2015 12:29
por Duda 'Sgluber'
asimoes escreveu:eu não estou usando a hwgui atual, estou esperando estabilizar.
Essa função fica no fonte misc.c
BOOL hb_itemEqual( PHB_ITEM pItem1, PHB_ITEM pItem2 )
No changelog tem essa informação:
! added hb_itemEqual for xharbour
qual a versão de harbour você está compilando: 3.2 ou 3.4?
Harbour 3.0,
asimoes.
Varri a pasta hwgui e o "hb_itemEqual" aparece apenas em libhwgui.a e drawtext.c.
Qual versão da HwGUI você sugere?
Erro ao compilar - undefined reference to 'hb_itemEqual'
Enviado: 28 Ago 2015 12:31
por asimoes
Outra informação importante:
No código da misc.c
Veja:
#if defined( __XHARBOUR__)
BOOL hb_itemEqual( PHB_ITEM pItem1, PHB_ITEM pItem2 )
Erro ao compilar - undefined reference to 'hb_itemEqual'
Enviado: 28 Ago 2015 12:35
por Duda 'Sgluber'
asimoes escreveu:Outra informação importante:
No código da misc.c
Veja:
#if defined( __XHARBOUR__)
BOOL hb_itemEqual( PHB_ITEM pItem1, PHB_ITEM pItem2 )
Hummm... mudanças devem ter sido feitas nas últimas versões da HwGUI, porque no meu MISC.c não existe o "hb_itemEqual".
Erro ao compilar - undefined reference to 'hb_itemEqual'
Enviado: 28 Ago 2015 13:01
por asimoes
O ideal é baixar a hwgui do svn
Vamos lá:
1-Baixe o TortoiseSVN-1.9.0.26652-x64-svn-1.9.0.msi em
http://sourceforge.net/projects/tortoisesvn/files/
2-Instale o svn
3- Crie uma pasta para baixar a hwgui do svn:
ex.: c:\svn\hwgui
Crie esta bat para baixar a hwgui:
hwguiupdate.bat
@echo off
set path=%path%;C:\Program Files\TortoiseSVN\bin
svn checkout svn://svn.code.sf.net/p/hwgui/code/trunk hwgui-code
pause
Depois é só executar a bat para atualizar
Para compilar a lib faço assim:
geramingw.bat
Código: Selecionar todos
@echo off
set path=\hb32fork\bin
SET HB_COMPILER=mingw
hbmk2 @hwgui.hbp -jobs=%NUMBER_OF_PROCESSORS% -rebuild
hbmk2 @procmisc.hbp -jobs=%NUMBER_OF_PROCESSORS% -rebuild
hbmk2 @hbxml.hbp -jobs=%NUMBER_OF_PROCESSORS% -rebuild
hbmk2 @hwgdebug.hbp -jobs=%NUMBER_OF_PROCESSORS% -rebuild
hbmk2 @hwguidyn.hbp -jobs=%NUMBER_OF_PROCESSORS% -rebuild
pause
Na pasta contrib tem outras libs
geramingwcontrib.bat
Código: Selecionar todos
@echo off
set path=\hb32fork\bin
SET HB_COMPILER=mingw
hbmk2 @hbactivex.hbp -jobs=%NUMBER_OF_PROCESSORS% -rebuild
hbmk2 @hwg_extctrl.hbp -jobs=%NUMBER_OF_PROCESSORS% -rebuild
hbmk2 @hwg_qhtm.hbp -jobs=%NUMBER_OF_PROCESSORS% -rebuild
pause
Erro ao compilar - undefined reference to 'hb_itemEqual'
Enviado: 28 Ago 2015 13:57
por asimoes
Outra dica, use a versão do harbour mais recente ou 3.2 ou 3.4 esta última está mais atualizada.
Erro ao compilar - undefined reference to 'hb_itemEqual'
Enviado: 28 Ago 2015 14:57
por Claudio Soto
El problema no es de la librería GUI, es que estas usando una versión vieja de Harbour, esa función fue incluida en:
Código: Selecionar todos
2013-01-31 19:48 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* harbour/include/hbapiitm.h
* harbour/src/vm/itemapi.c
+ added new C function hb_itemEqual()
Erro ao compilar - undefined reference to 'hb_itemEqual'
Enviado: 28 Ago 2015 15:59
por Duda 'Sgluber'
asimoes escreveu:Outra dica, use a versão do harbour mais recente ou 3.2 ou 3.4 esta última está mais atualizada.
Claudio Soto escreveu:El problema no es de la librería GUI, es que estas usando una versión vieja de Harbour, esa función fue incluida en:
Código: Selecionar todos
2013-01-31 19:48 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* harbour/include/hbapiitm.h
* harbour/src/vm/itemapi.c
+ added new C function hb_itemEqual()
asimoes e Claudio Soto,
vocês estão absolutamente certos.
Quando eu notei e disse que mudanças deviam ter sido feitas nas últimas versões da HwGUI, sem querer quase acertei: na verdade, a resposta eram as mudanças feitas nas últimas versões do Harbour, nenhum problema com a versão mais nova da HwGUI!
Então, para deixar este
tópico solucionado para quem estiver lendo futuramente: basta fazer exatamente como eu fiz e postei na primeira mensagem (e só é preciso utilizar 2 das 4 libs criadas, conforme abaixo), mas
é necessário usar o Harbour 3.2 ou superior. Eu acabei de ter sucesso compilando com a 3.2:
Código: Selecionar todos
hbmk2 -lhwgui -lprocmisc hwguites
Harbour 3.2.0dev (Rev. 18893)
Copyright (c) 1999-2013, http://harbour-project.org/
Compiling 'hwguites.prg'...
Lines 3426, Functions/Procedures 1
Generating C source output to 'C:\DOCUME~1\user\CONFIG~1\Temp\hbmk_bbmgnw.dir\hw
guites.c'... Done.
MUITO OBRIGADO A VOCÊS - mensagens curtidas! 
Erro ao compilar - undefined reference to 'hb_itemEqual'
Enviado: 28 Ago 2015 22:30
por Itamar M. Lins Jr.
Ola!
estou esperando estabilizar.
Eu uso normalmente a versão 2.19 do SVN.
Não vai estabilizar é a 2.16/2.17 Não tem ninguém corrigindo.
O problema é, quanto mais tempo você levar para mudar seus fontes, mais difícil será a migração para a versão mais atual.
Saudações,
Itamar M. Lins Jr.
Erro ao compilar - undefined reference to 'hb_itemEqual'
Enviado: 29 Ago 2015 13:45
por asimoes
Itamar,
Vou arriscar atualizar mais tarde, a que eu uso 2.17 fiz umas adaptações para meu uso.
Vou esperar mais um pouco.
Tenho que criar todo um ambiente novo modificar os fontes para as exigências da nova versão e ter certeza que tudo vai funcionar como antes.
Erro ao compilar - undefined reference to 'hb_itemEqual'
Enviado: 29 Ago 2015 13:51
por Itamar M. Lins Jr.
Eu nem sei quantas modificações tive que fazer no código do sistema aqui, nem quantos dias eu levei.

Eu não encontrei alternativa melhor, mergulhei na 2.18->2.19 enchi o Alexander de perguntas e outros tantos problemas de incompatibilidade com a versão 2.17 e está funcionado bem as coisas por aqui.
É bom aproveitar a disponibilidade e boa vontade em ajudar do Alexander... por enquanto só tem ele.
Saudações,
Itamar M. Lins Jr.
Erro ao compilar - undefined reference to 'hb_itemEqual'
Enviado: 29 Ago 2015 14:22
por asimoes
Itamar,
Fiz um programinha de teste usando richedit em uma função que faz parte de uma lib minha, deu erro de compilação
Isso é uma das grandes carências que temos qual foi o erro! bom descobri vendo o guilib.ch, achei o xcommand da richedit
descobri que não tem o método ON CHANGE e agora?
Não há nenhuma informação no changelog sobre a retirada do método on change
O richedit que uso está assim:
Acho legal o que o Alexander tá fazendo mas remover métodos que usamos sem informar fica dificil, onde uma aplicação está baseada em determinada função e ter que alterar todo o código para outra que nem sei se vai me atender é complicado.
Código: Selecionar todos
@ 0,0 RichEdit oEdit TEXT cMemo ;
OF oDlgEditor ID ID_TEXTO ;
COLOR nCorFonteP ;
BACKCOLOR nCorFundoP ;
STYLE nStyle ;
ON CHANGE {||cObs:=oEdit:GetText(), IF(lLeitura, btnSalvar:Disable(), btnSalvar:Enable())};
ON GETFOCUS {|| TopoDoc(SB_TOP)};
FONT oFont1 ;
ON OTHERMESSAGES {|this,m,wp,lp| richeditProc( this, m, wp, lp, lLeitura, cJanela ) }
Erro ao compilar - undefined reference to 'hb_itemEqual'
Enviado: 29 Ago 2015 20:45
por Itamar M. Lins Jr.
Ola!
remover métodos que usamos sem informar fica dificil,
O que aconteceu foi o seguinte:
Quando o Alexander voltou a mexer na Hwgui, encontrou dificuldade de mexer no código, pois a Hwgui estáva muito engessada no windows. E tinha a versão GTK do Linux em conflito e também tornar a hwgui 100% funcional com unicode.
Ele avisou que iria retornar para versão 2.16 e fazer todas as correções de compatibilidade com a versão 2.17, só que ninguém ajudou, praticamente apenas eu e mais dois ou três aqui do Brasil enviando problemas de incompatibilidades com a 2.17.
Nisso ele criou a pasta contrib\ext_controls\ na qual vai quase 100% das coisas "for windows" muitas das modificações do Luis Basso estão nela.
E criou um branch da 2.17 para quem quisesse continuar corrigindo, dar continuidade na 2.17. Infelizmente ninguém apareceu.
Saudações,
Itamar M. Lins Jr.