日期:2014-05-16  浏览次数:20691 次

gtk中的一个函数问题
各位高手,我用GTK+做了一个小界面,里面有:
GtkWidget   *button;
  GtkWidget   *entry;
然后gtk_signal_connect(GTK_OBJECT(button), "clicked ",GTK_SIGNAL_FUNC(do_send),entry);
下面是我的do_send()函数
void   do_send(GtkWidget   *button,gpointer   entry)
{
  const   gchar   *s;
  s=gtk_entry_get_text(GTK_ENTRY(entry));
  if(strlen(s))
    write(wisock.sock,s,strlen(s))
}
目的就是点击一下按钮向套接字发送entry中的信息(wisock.sock就是套接字)。
可程序运行到这就出现段错误,我看了一下调试信息,看消息上说问题出在
Program   received   signal   SIGSEGV,   Segmentation   fault.
[Switching   to   Thread   -1217399104   (LWP   6305)]
0xb79d719c   in   g_type_check_instance_cast   ()   from   /usr/lib/libgobject-2.0.so.0
不懂这是怎么搞的...?
请高手救救我!

------解决方案--------------------
GtkWidget *entry;

void do_send(GtkWidget *button,gpointer entry)
你仔细看看,entry是个部件,你传给do_send的entry,
改为
void do_send(GtkWidget *button,GtkWidget *entry)