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 */




posted on 2013-03-19 18:36  存在的存在  阅读(290)  评论(0编辑  收藏  举报

导航