Hallo,
ich hab gerade ein "Problem" das ich nicht verstehe, bzw. nicht haben möchte.
Und zwar muss ich (GTK3) komischerweise an diesen Handler:
|
C-/C++-Quelltext
|
1
2
3
|
extern "C" void paul(GtkWidget* widget, gpointer data){ // ja heißt paul... (Test)
std::cout<<"open settings..."<<std::endl;
}
|
extern "C" anhängen damit GTK ihn findet, aber an diesen nicht:
|
C-/C++-Quelltext
|
1
2
3
|
void exit(GtkWidget* widget, gpointer data){
gtk_main_quit();
}
|
Das stört mich, ich möchte kein hässliches extern "C" davor haben und gerne verstehen warum es unten geht.
Aufgesetzt wird das Fenster wie folgt:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
int main(int argc, char** args){
gtk_init(&argc, &args);
GtkBuilder* builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "res/UI.glade", 0);
gtk_builder_connect_signals(builder, 0);
GtkWidget* window = GTK_WIDGET(gtk_builder_get_object(builder, "mainWindow"));
gtk_widget_show(window);
gtk_main();
return 0;
}
|
Das UI selbst wurde in Glade gebaut. Nichts spektakuläres bis jetzt, nur ein Fenster mit Hauptmenü + zwei Einträge dort.
Kompiliert wird mit pkg-config (unter Linux) und sonst nix:
|
Quellcode
|
1
|
`pkg-config --cflags --libs gtk+-3.0 gmodule-2.0` -export-dynamic
|
Hat irgendwer rat? Sonst mach ich erstmal weiter, aber wäre schön das zu wissen
[Edit]
Außerdem werden Funktionen wie gtk_window_close() nicht gefunden?