zoukankan      html  css  js  c++  java
  • 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 */
  • 相关阅读:
    AliSQL的编译使用
    linux下编译gcc6.2.0
    TransmitFile函数的简单使用
    C++11的简单线程池代码阅读
    TJpgDec使用说明
    TJpgDec—轻量级JPEG解码器
    PPM图片格式及其C读写代码
    linux下vmware的安装、物理分区使用及卸载
    visual stuido 跨解决方案调试
    Proj.4坐标系统创建参数
  • 原文地址:https://www.cnblogs.com/marklove/p/14274001.html
Copyright © 2011-2022 走看看