So, I'm using GTK+ library and GLADE gui constructor, but I'm getting an error when i compile the code in C++, the GTK+ can't find my signal handlers but when i just modify my file names from *.cpp for *.c to codeblocks compile in C, the GTK finds my handlers.
Other test that i made was put my handler directly in the main file and this didn't work too. Why GTK don't find my handlers?
Compiler settings:
Compiler -> other options:
Code:
`pkg-config --cflags --libs gtk+-2.0` -export-dynamic
Linker -> other options:
main.cpp or main.c:
Code:
#include <gtk/gtk.h>
#include "Callbacks.h"
//this handler isn't found in C++
void on_main_window_destroy(GtkWidget widget, gpointer data_user)
{
gtk_main_quit();
}
int main (int argc, char *argv[])
{
GtkBuilder *builder;
GtkWidget *main_window;
gtk_init(&argc,&argv);
builder = gtk_builder_new();
gtk_builder_add_from_file(builder,"GUI/main_gui.glade",NULL);
main_window = GTK_WIDGET( gtk_builder_get_object(builder,"main_window"));
gtk_builder_connect_signals(builder,NULL);
g_object_unref(G_OBJECT(builder));
gtk_widget_show(main_window);
gtk_main();
return 0;
}
Callbacks.h
Code:
#include <gtk/gtk.h>
void on_main_window_destroy(GtkWidget widget, gpointer data_user);
void on_open_menu_activate(GtkWidget widget, gpointer data_user);
void on_save_menu_activate(GtkWidget widget, gpointer data_user);
void on_information_menu_activate(GtkWidget widget, gpointer data_user);
void on_quit_menu_activate(GtkWidget widget, gpointer data_user);
Callbacks.c or cpp
Code:
#include "Callbacks.h"
/*void on_main_window_destroy(GtkWidget widget, gpointer data_user)
{
gtk_main_quit(); removed to not duplicate definition(main.cpp)
}*/
//handlers that aren't found in C++ but are found in C
void on_quit_menu_activate(GtkWidget widget, gpointer data_user)
{
gtk_main_quit();
}
void on_open_menu_activate(GtkWidget widget, gpointer data_user)
{
/*
... */
}
void on_save_menu_activate(GtkWidget widget, gpointer data_user)
{
}
void on_information_menu_activate(GtkWidget widget, gpointer data_user)
{
}