【问题标题】:Compiling Code for Gnome Keyrings为 Gnome 密钥环编译代码
【发布时间】:2011-11-05 07:22:02
【问题描述】:

我找到了一个关于使用 Gnome Keyrings 的示例,但我无法编译它,我不知道所需的包含或库,而且我似乎无法在文档中找到此信息,所以任何非常感谢您的帮助!

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <glib.h>
#include <gtkmm.h>

/* A callback called when operation completes */
static void stored_password (GnomeKeyringResult res, gpointer user_data)
{
        /* user_data will be the same as was passed to gnome_keyring_store_password() */
        if (res == GNOME_KEYRING_RESULT_OK)
                g_print ("password saved successfully!\n");
        else
                g_print ("couldn't save password: %s", gnome_keyring_result_to_message (res));
}

static void save_my_password()
{
        gnome_keyring_store_password (GNOME_KEYRING_NETWORK_PASSWORD, /* The password type */
                                      GNOME_KEYRING_DEFAULT,          /* Where to save it */
                                      _("My special password"),       /* Password description, displayed to user */
                                      "the-password",                 /* The password itself */
                                      stored_password,                /* A function called when complete */
                                      NULL, NULL,                     /* User data for callback, and destroy notify */

                                      /* These are the attributes */
                                      "user", "me", 
                                      "server", "gnome.org",

                                      NULL); /* Always end with NULL */
}

int main()
{
    save_my_password();
    return 0;
}

再次感谢。

【问题讨论】:

    标签: c gcc gnome


    【解决方案1】:

    您可以使用pkg-config和shell扩展来自动获取所需的依赖:

    gcc -o test test.c $(pkg-config --libs --cflags gnome-keyring-1 gtk+-2.0) 
    

    另外,不要包含gtkmm.h 标头,而是包含纯gtk+.h

    -#include <gtkmm.h>
    +#include <gtk/gtk.h>
    

    Gtkmm 是 C++ 接口,如果您使用纯 C 进行编码,则不需要它。

    现在,当我查看您的 main 函数时,我不得不说您的方法几乎是正确的,但它不起作用,因为为了运行 gtk+ 应用程序(显示错误对话框等小部件),您需要首先进行一些初始化(即启动主循环)。查看描述中的Typical main() function for Gtk+ application example

    【讨论】:

    • 找不到 gtkmm.h 或 gtk/gtk.h,“错误:gtkmm.h 没有这样的文件或目录”
    • 对不起,gtk/gtk.h 而不是 gtkmm
    • 啊,是的,您需要将gtk+-2.0 添加到pkg-config 列表中。
    猜你喜欢
    • 2011-12-30
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    相关资源
    最近更新 更多