我想创建一个自定义的GTK模块,当我启动一个GTK应用程序时应该加载它。如何创建和加载GTK模块?
有关此主题的文档很少,我搜索了很多,但未能使其运行。我在Ubuntu Linux上使用GTK3并尝试使用sofar:
- 编译并链接共享库的方法
void gtk_module_init(gint *argc, gchar ***argv[])
里面。据我了解,这应该足以创建一个简单的模块。全码:
#include <iostream>
#include <gtk/gtk.h>
void gtk_module_init(gint *argc, gchar ***argv[]) {
std::cout << "huhu" << std::endl;
}
- 将这个lib放到/usr/lib/x86_64-linux-gnu/gtk-3.0/modules/libtest-gtk-module.so
- 试图推出一个应用程序像这样:
gnomine --gtk-module=libtest-gtk-module.so
但我得到的是:Gtk-Message: Failed to load module "libtest-gtk-module.so"
那么还有什么是为了让GTK加载该库做?
非常感谢提前!
嗯,我试过了。但没有成功。也许模块有一些错误? GTK提供的错误并不是非常有用......并且感谢链接,它似乎相当有用! – Simme 2012-04-22 07:52:04
+1 @Simme:请检查编辑。最有可能你的问题是与名称问题。您可以使用'readelf'或其他这类实用程序来检查是否存在'gtk_module_init'(就像没有任何前缀/后缀,即mangling)符号一样 – 2012-04-23 15:58:22