GTK+Glade3 Gtk-WARNING **: Could not find signal handler 问题最终解析

GTK + 使用 Glade3 编程时,调用自动信号连接

    gtk_builder_connect_signals();

编译时不出现任何问题,但是运行时提示

Gtk-WARNING **: Could not find signal handle


可能产生的原因:

Windows 平台:

1)callback 函数没加 G_MODULE_EXPORT

宏定义如下:

    #ifdef G_PLATFORM_WIN32
    #  define    G_MODULE_EXPORT       __declspec(dllexport)
    #else /* !G_PLATFORM_WIN32 */
    #  define    G_MODULE_EXPORT
    #endif /* !G_PLATFORM_WIN32 */

2)编译选项加 -export-dynamic


Linux 平台:

1)忘加编译选项 -export-dynamic

2)如果使用 C++ 编译器,由于C++ 有名字粉碎(C++ symbol mangling), GTK+是C程序,需使用c风格的回调函数

     函数声明前加上 extern “C”   或者使用 extern "C" { ......................}

3)当然 修改G_MODULE_EXPORT 的宏定义,在回调函数定义前加G_MODULE_EXPORT宏也可以

    #ifdef G_PLATFORM_WIN32
    #  define    G_MODULE_EXPORT  __declspec(dllexport)
    #else /* !G_PLATFORM_WIN32 */
    #  define    G_MODULE_EXPORT  extern "C"
    #endif /* !G_PLATFORM_WIN32 */




转载于:https://www.cnblogs.com/gcssys/archive/2013/03/19/3790313.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 当出现"Gtk-WARNING **: cannot open display"的错误提示时,通常是因为Xserver默认情况下不允许别的用户的图形程序的图形显示在当前屏幕上。如果需要让别的用户的图形显示在当前屏幕上,可以以当前登录的用户执行命令"xhost +"来授予其他用户访问当前屏幕的权限。这样就可以以另外的用户运行需要运行的程序了。\[1\] 另外,如果是通过SSH远程链接到服务器,并且出现"Gtk-WARNING **: cannot open display"的错误提示,可以尝试修改SSH的远程链接方式为"-Y",这样可以解决该问题。\[2\] 对于使用qemu-kvm开启虚拟机时出现"Gtk-WARNING **: cannot open display"的错误提示,这通常是因为在通过ssh登录到服务器时,执行qemu的启动程序会产生该错误。这是因为qemu-kvm利用图形界面方式开启虚拟机,而ssh登录到服务器时没有图形界面。\[3\] #### 引用[.reference_title] - *1* [使用gedit出现No protocol specified (gedit:14333): Gtk-WARNING **: cannot open display: :0.0](https://blog.csdn.net/wojiuguowei/article/details/83618821)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [亲测有用,轻松解决远程链接的“Gtk-WARNING **: cannot open display;”或“Cannot connect to display;...](https://blog.csdn.net/weixin_40303822/article/details/118547587)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Gtk-WARNING **: cannot open display问题的解决](https://blog.csdn.net/Lux_Veritas/article/details/19244349)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值