C++ C++&;克莱恩;GTK3&;glade信号不工作
是我的CMakeLists.txt Glade模板工作,窗口显示,但信号不工作。我得到以下错误:C++ C++&;克莱恩;GTK3&;glade信号不工作,c++,cmake,gtk3,clion,C++,Cmake,Gtk3,Clion,是我的CMakeLists.txt Glade模板工作,窗口显示,但信号不工作。我得到以下错误: 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(PkgConfi
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})
我使用了-rdynamic
标志,但仍然得到了相同的错误
但下面的代码在终端中工作。我需要让CMake在代码下运行,这样它才能正常工作,或者你怎么想
(Chat:19486): Gtk-WARNING **: 11:44:05.546: Could not find signal handler 'on_login_window_destroy'. Did you compile with -rdynamic?
我正在所有的库中使用Ubuntu18.04(我想是的)。我想在经过大量搜索之后。。我发现它只适用于c,我已经测试过了;被发现是真的。因此,我使用的是
gtkmm.h
,它似乎能按预期工作。尽管使用了gtk-2.0,但我还是遇到了完全相同的问题(和错误消息)。在macOS上解决这个问题的方法是直接使用FindGTK2
模块,而不是pkg config命令。例如:
gcc -o Chat main.cpp -Wall `pkg-config --cflags --libs gtk+-3.0` -export-dynamic
在Linux上,我还必须添加
set(CMAKE\u EXE\u LINKER\u FLAGS“-rdynamic”)
尝试从终端使用CMAKE构建它,看看调用了什么命令。根据你的建议。它使用/usr/bin/c++-std=c++11 CMakeFiles/Chat.dir/main.cpp.o-o Chat-lgtk-3-lgdk-3-lpangoairo-1.0-lpango-1.0-latk-1.0-lcairo-gobject-lcairo-lgdk_-pixbuf-2.0-lgio-2.0-lgobject-2.0-lglib-2.0
so??我不知道cmake和在所需位置添加标志。。。?
gcc -o Chat main.cpp -Wall `pkg-config --cflags --libs gtk+-3.0` -export-dynamic
find_package(GTK2 REQUIRED gtk glade)
if(GTK2_FOUND)
include_directories(${GTK2_INCLUDE_DIRS})
link_libraries(${GTK2_LIBRARIES})
add_definitions(${GTK2_DEFINITIONS})
endif()