Erro ao compilar - undefined reference to 'hb_itemEqual'

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Duda 'Sgluber'
Usuário Nível 3
Usuário Nível 3
Mensagens: 148
Registrado em: 11 Mar 2013 21:57
Localização: Interior de São Paulo

Erro ao compilar - undefined reference to 'hb_itemEqual'

Mensagem 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! Imagem
Comecei pra valer nos tempos do MSX e nunca mais parei... grande caminhada! :-)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Erro ao compilar - undefined reference to 'hb_itemEqual'

Mensagem 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?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Duda 'Sgluber'
Usuário Nível 3
Usuário Nível 3
Mensagens: 148
Registrado em: 11 Mar 2013 21:57
Localização: Interior de São Paulo

Erro ao compilar - undefined reference to 'hb_itemEqual'

Mensagem 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?
Comecei pra valer nos tempos do MSX e nunca mais parei... grande caminhada! :-)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Erro ao compilar - undefined reference to 'hb_itemEqual'

Mensagem 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 )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Duda 'Sgluber'
Usuário Nível 3
Usuário Nível 3
Mensagens: 148
Registrado em: 11 Mar 2013 21:57
Localização: Interior de São Paulo

Erro ao compilar - undefined reference to 'hb_itemEqual'

Mensagem 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".
Comecei pra valer nos tempos do MSX e nunca mais parei... grande caminhada! :-)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Erro ao compilar - undefined reference to 'hb_itemEqual'

Mensagem 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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Erro ao compilar - undefined reference to 'hb_itemEqual'

Mensagem por asimoes »

Outra dica, use a versão do harbour mais recente ou 3.2 ou 3.4 esta última está mais atualizada.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Erro ao compilar - undefined reference to 'hb_itemEqual'

Mensagem 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()
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar do usuário
Duda 'Sgluber'
Usuário Nível 3
Usuário Nível 3
Mensagens: 148
Registrado em: 11 Mar 2013 21:57
Localização: Interior de São Paulo

Erro ao compilar - undefined reference to 'hb_itemEqual'

Mensagem 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! Imagem
Comecei pra valer nos tempos do MSX e nunca mais parei... grande caminhada! :-)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Erro ao compilar - undefined reference to 'hb_itemEqual'

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Erro ao compilar - undefined reference to 'hb_itemEqual'

Mensagem 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.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Erro ao compilar - undefined reference to 'hb_itemEqual'

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Erro ao compilar - undefined reference to 'hb_itemEqual'

Mensagem 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 ) } 
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Erro ao compilar - undefined reference to 'hb_itemEqual'

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Responder