c/c++语言开发共享无法连接Glade GTK + 3中的信号和信号处理程序

嗨我正在使用Ubuntu 14.04 LTS上的GTK + 3项目。 我正在尝试使用Glade,但当我尝试将切换按钮的“切换”信号连接到一个名为kaczka的函数时,编译后我在我的控制台中得到了这个: (Gra_w_Statki:11072): Gtk-Warning**:Could not find signal handler 'kaczka. Did you compile with -rdynamic? (Gra_w_Statki:11072): Gtk-Warning**:Could not find signal handler 'kaczka. Did you compile with -rdynamic?

窗口和按钮呈现自己并正常工作,除了切换按钮不会改变任何东西。 我究竟做错了什么 ?

这就是我试图连接切换按钮和function的方法点击!

我的链接器设置是: pkg-config --libs gtk+-3.0

我的编译器设置是: pkg-config --cflags gtk+-3.0

我正在使用Code :: Blocks 13.12和GCC编译器。

这是我的代码:

 #include  #include  void kaczka (GtkToggleButton *tbutton, gpointer data) { gtk_main_quit (); } int main (int argc, char *argv[]) { GtkWidget *win = NULL; GtkBuilder *builder; gtk_init (&argc, &argv); builder=gtk_builder_new(); gtk_builder_add_from_file( builder, "kaczka.glade", NULL); win=GTK_WIDGET(gtk_builder_get_object(builder,"window1")); gtk_builder_connect_signals( builder, NULL ); g_object_unref( G_OBJECT( builder ) ); gtk_widget_show_all (win); gtk_main (); return 0; } 

    看一下gtk_builder_connect_signals()和gtk_builder_add_callback_symbol()文档。 基本上你需要

    您可以添加更多编译器设置,

    pkg-config --libs --cflags gmodule-2.0

    如果有人用介子构建程序,只需添加

    gmoddep = dependency('gmodule-2.0')

    依赖列表。

    添加-rdynamic以导出函数并使其对加载器可见。

    > gcc pkg-config --cflags gtk+-3.0 -o kaczka kaczka.c pkg-config --libs gtk+-3.0

    > ./kaczka

    (kaczka:31686):Gtk-WARNING **:找不到信号处理程序’on_destroy’。 你用-rdynamic编译了吗?

    > gcc pkg-config --cflags gtk+-3.0 -o kaczka kaczka.c pkg-config --libs gtk+-3.0

    > ./kaczka

    没有警告。

    我认为你的kaczka.glade可能会出错。

    我使用你的.c源文件并创建了我自己的.glade ,它运行良好。

    您正在尝试使用什么版本的Glade?

    运行最新版本,看看它是否解决了问题。

      以上就是c/c++开发分享无法连接Glade GTK + 3中的信号和信号处理程序相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560301.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐