您的位置:首页 > 其它

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

2013-03-19 18:36 1076 查看
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 */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gtk glade
相关文章推荐