#include <gtk/gtk.h>
G_MODULE_EXPORT void on_login_window_destroy()
{
gtk_main_quit();
}
int main (int argc, char **argv)
{
gtk_init(&argc, &argv);
GtkBuilder *builder;
GtkWidget *window;
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "../layout.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "login_window"));
gtk_builder_connect_signals(builder, NULL);
g_object_unref(builder);
gtk_widget_show(window);
gtk_main();
return 0;
}
это мой main.cpp
и
cmake_minimum_required(VERSION 3.6)
project(Chat)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -rdynamic")
set(SOURCE_FILES main.cpp)
add_executable(Chat ${SOURCE_FILES})
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
include_directories(${GTK3_INCLUDE_DIRS})
link_directories(${GTK3_LIBRARY_DIRS})
add_definitions(${GTK3_CFLAGS_OTHER})
target_link_libraries(Chat ${GTK3_LIBRARIES})
это мой CMakeLists.txt
Шаблон Glade работает и окно показывает, но сигнал не работает. Я получил ниже ошибки:
(Chat:19486): Gtk-WARNING **: 11:44:05.546: Could not find signal handler 'on_login_window_destroy'. Did you compile with -rdynamic?
Я использовал флаг -rdynamic
, но все еще получал ту же ошибку.
Но приведенный ниже код работает в терминале. Мне нужно было бы либо заставить CMake работать под кодом ниже, чтобы он работал, или как вы думаете .?
gcc -o Chat main.cpp -Wall `pkg-config --cflags --libs gtk+-3.0` -export-dynamic
Я использую UBUNTU 18.04 со всеми библиотеками (я так думаю.)