Página 1 de 1
xHGTK (Alguem esta testando?)
Enviado: 07 Fev 2008 13:40
por hrodrigom
Boa Tarde,
Algum companheiro já está trabalhando com xHgtk?
Estou tentando compiliar um pequeno exemplo, juntamente com a contrib do postgresql mas está gerando um erro de segmentação quando executo meu teste.
nao preciso ter nada em especial,
basta um exemplo simples
Código: Selecionar todos
function main()
PRIVATE oServer := TPQServer():New('localhost', 'flaro', 'postgres', 'senha')
return .t.
Nada de especial,
mas no meu script do hbmake ao colocar a linha
Código: Selecionar todos
LFLAGS = -Wl,--noinhibit-exec -static -gtcrs `pkg-config --libs gtk+-2.0 libglade-2.0` -lxhgtk
dai compila normalmente, so que executa somente até a linha onde faz a conexao com o servidor postgresql..
Alguma sujestao?
Será que existe alguma incompatibilidade em alguns include ou algo assim?
função duplicada, acredito que nao.. mas como meu conhecimento é......
Obs:
Ubuntu 7.04
xHarbour Compiler build 0.99.70
gcc (GCC) 4.1.2 (Ubuntu 4.1.2-0ubuntu4)
gtk-config --version
1.2.10
Outra Obs:
Se nao usar postgresql, a xhgtk funciona bem..[/code]
Enviado: 07 Fev 2008 14:21
por hrodrigom
Consegui isolar quais sao as libs que estao gerando o conflito.
Ao executar no console
obtem-se o resultado
Código: Selecionar todos
-lglade-2.0 -lgtk-x11-2.0 -lxml2 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXfixes -lpango-1.0 -lcairo -lX11 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
Este resultado coloco no script do hbmake, e vou retirando lib por lib até encontrar o conflito,
sao estas as libs
Mas mesmo assim, consegui abrir uma pequena janelinha GTK por cima do meu sistema.
nao sei se me farão falta no futuro estas libs, provavelmente sim.
Aguardo qualquer sugestao.
Gracias
Enviado: 07 Fev 2008 18:24
por rodrmigu
Olá Rodrigo,
Acabei de testar no linux e tá funcionando normalmente. Segue o programa que usei para testar:
#include "xhgtk.ch"
Function Main ()
Local pWindow
Local pButton
gtk_init()
pWindow := gtk_window_new( GTK_WINDOW_TOPLEVEL )
gtk_widget_set_size_request( pWindow, 160, 120 )
gtk_window_set_title( pWindow, "Postgres Test" )
gtk_container_set_border_width( pWindow, 1 )
gtk_window_set_position( pWindow, GTK_WIN_POS_CENTER )
pButton := gtk_button_new_with_label( "Connect" )
gtk_container_add( pWindow, pButton )
gtk_signal_connect( pWindow, "destroy", {|| gtk_main_quit() } )
gtk_signal_connect( pButton, "clicked", {|| Teste() } )
gtk_widget_show_all( pWindow )
gtk_main()
Return Nil
Procedure Teste()
Local oServer
oServer := TPQServer():New('192.168.0.104', 'teste', 'sysadm', 'dummy')
if oServer:NetErr()
MsgStop(oServer:Error())
end
oServer:Destroy()
Return nil
[]'s
Rodrigo
Enviado: 07 Fev 2008 19:15
por rodrmigu
Rodrigo,
Eu acho que tenho mais ou menos uma idéia do que seja. O xHarbour nao lida direito com variáveis PRIVATE com a gtk. Entao tente trocar por LOCAL.
[]'s
Rodrigo
Enviado: 07 Fev 2008 21:41
por ederxc
rodrmigu escreveu:Rodrigo,
Eu acho que tenho mais ou menos uma idéia do que seja. O xHarbour nao lida direito com variáveis PRIVATE com a gtk. Entao tente trocar por LOCAL.
[]'s
Rodrigo
Cuma? Essa eu não sabia , até agora não tive problema com PRIVATE

Enviado: 07 Fev 2008 21:41
por hrodrigom
Amigo, ja testei tudo isso que vc falou, e nada..
Eu preciso que esse oServer seja publico ou private..
Eu faço uma unica conexao com o servidor quando abro o sistema,
mas de qualquer forma nao deu certo..
Mas tranquilo, estou conseguindo testar a xHgtk sem aquelas duas libs xml2 cairo, assim que me fazerem falta, eu investigo com mais calma.. quem sabe até lá eu ja tenha atualizado meu xharbour.. q na verdade está com um bug e nao está me sobrando tempo de contornar isto..
Mesmo assim, obrigado.
Se eu descobrir o que está acontecendo realmente, eu reporto aqui..
Saludos
Enviado: 08 Fev 2008 10:07
por rodrmigu
ederxc escreveu:
Cuma? Essa eu não sabia , até agora não tive problema com PRIVATE
Pois é, pra mim também foi surpresa, mas o lance da gtk é que sempre que se abre uma janela, não tem um ponto de loop no final dela fazendo a função em xharbour fazer o RETURN, com isso as referências para as variáveis na stack do xharbour se perdem (Descobri isso depois de sofrer bastante).
Enfim, vc pode usar PUBLIC ou GLOBAL neste caso.
[]'s
Rodrigo