gpt4 book ai didi

C++ & Clion & GTK3 & glade 信号不工作

转载 作者:行者123 更新时间:2023-11-28 04:41:10 25 4
gpt4 key购买 nike

#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.txtGlade 模板有效,窗口显示,但信号不工作。我收到以下错误:

(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 与所有库一起使用(我认为是这样。)

最佳答案

就其值(value)而言,我遇到了完全相同的问题(和错误消息),尽管使用的是 gtk-2.0。在 macOS 上解决它的方法是直接使用 FindGTK2 模块,而不是 pkg-config 命令。例如:

find_package(GTK2 REQUIRED gtk glade)
if(GTK2_FOUND)
include_directories(${GTK2_INCLUDE_DIRS})
link_libraries(${GTK2_LIBRARIES})
add_definitions(${GTK2_DEFINITIONS})
endif()

在 Linux 上,我还必须添加 set(CMAKE_EXE_LINKER_FLAGS "-rdynamic")

关于C++ & Clion & GTK3 & glade 信号不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50168262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com