Компиляция кода для ключей Gnome - PullRequest
0 голосов
/ 05 ноября 2011

Я нашел пример использования 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;
}

Еще раз спасибо.

1 Ответ

1 голос
/ 05 ноября 2011

Вы можете использовать pkg-config и расширение оболочки для автоматического получения необходимых зависимостей:

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 + (показывать виджеты как диалоги ошибок) вам нужно сначала выполнить некоторую инициализацию (т. е. запустить основной цикл). Посмотрите Типичную функцию main () для примера приложения Gtk + в описании.

...