gpt4 book ai didi

module - 如何创建和加载 GTK 模块?

转载 作者:行者123 更新时间:2023-12-04 08:45:36 24 4
gpt4 key购买 nike

我想创建一个自定义 GTK 模块,当我启动 GTK 应用程序时应该加载该模块。

关于这个主题的文档很少,我搜索了很多,但我没有让它运行。我在带有 GTK3 的 Ubuntu Linux 上尝试过:

  • 使用 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;
    }
  • 将此库放入/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 加载这个库,还需要做什么呢?

    提前谢谢了!

    最佳答案

    您需要让系统知道该库。对于系统目录中的库,以 root 身份运行 ldconfig 就足够了。看看教程here .

    [编辑]

    我让模块加载如下:

  • 由于这是 C++ 代码,因此您需要确保函数名称没有被重命名:
    extern "C" {
    void gtk_module_init(gint *argc, gchar ***argv[]) {
    std::cout << "huhu" << std::endl;
    }
    }
  • 我用以下内容构建了它:
    g++ -fPIC -shared -Wl,-soname,libfoo.so.1 -olibfoo.so.1.0.1 `pkg-config --libs --cflags gtk+-3.0` t.c
  • 我使用了绝对路径来避免弄乱 ldconfig,这可能是开发模块时最好的做法:
    ~$ gedit --gtk-module=/home/eric/libfoo.so.1.0.1 t.c
    huhu

  • 这是在 Mint LMDE 上,而不是在 Ubuntu 上,但我认为这并不重要。

    关于module - 如何创建和加载 GTK 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10260940/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com