• gcc dll 导出问题 GTK+Glade3 Gtk-WARNING **: Could not find signal handler 问题最终解析


    加载路径问题
    const char *GLADE_PATH1 = "C:msys64homefreemass24-linux etradio etradio.glade";

    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

    加入之前
    void PresetClicked(GtkButton *obj, gpointer data)
    {
    }
    加入之后
    G_MODULE_EXPORT void PresetClicked(GtkButton *obj, gpointer data)
    {
    }

    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 */
  • 相关阅读:
    demo_38 关注页导航栏实现
    demo_37 评论列表实现_02 封装popup 及 格式化时间
    demo_37 评论列表实现_01
    SaaS
    rsyncd脚本
    rsyncd
    MySQL高可用--MHA安装
    正向代理
    zabbix 一键部署
    kvm安装
  • 原文地址:https://www.cnblogs.com/marklove/p/14274001.html
Copyright © 2020-2023  润新知