Voglio creare un modulo GTK personalizzato che dovrebbe essere caricato quando avvio un'applicazione GTK.Come creare e caricare un modulo GTK?
documentazione su questo argomento è rara, ho cercato molto, ma non sono riuscito a farlo funzionare. Sono su Ubuntu Linux con GTK3 e ho provato sofar:
- Compilato e collegato una libreria condivisa con il metodo
void gtk_module_init(gint *argc, gchar ***argv[])
all'interno. Per quanto ho capito, questo dovrebbe essere sufficiente per creare un modulo semplice. codice completo:
#include <iostream>
#include <gtk/gtk.h>
void gtk_module_init(gint *argc, gchar ***argv[]) {
std::cout << "huhu" << std::endl;
}
- Mettere questo lib in /usr/lib/x86_64-linux-gnu/gtk-3.0/modules/libtest-gtk-module.so
- cercato di lanciare un'applicazione in questo modo:
gnomine --gtk-module=libtest-gtk-module.so
Ma tutto quello che ottiene è:Gtk-Message: Failed to load module "libtest-gtk-module.so"
Quindi, che cosa deve essere fatto in modo da rendere GTK caricare questa libreria?
Molte grazie in anticipo!
Beh, ci ho provato. Ma senza successo. Forse c'è qualche errore nel modulo? L'errore fornito da GTK non è molto utile ... E grazie per il collegamento, sembra piuttosto utile! – Simme
+1 @Simme: controlla la modifica. Molto probabilmente il tuo problema riguardava il problema del mangling del nome. È possibile utilizzare 'readelf' o altre utility di questo tipo per verificare se è presente il simbolo' gtk_module_init' (come è senza alcun prefisso/suffisso i.e. mangling) –