加载路径问题
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 */