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