c++ - 尽管已安装,但在 MinGW 中未找到 gtkmm

标签 c++ mingw gtk3 gtkmm3

我正在尝试编译以下简单文件(来自教程站点之一的演示代码),但尽管安装了 gtkmm.h ,但仍未找到。

$ cat rngtk1.cpp
#include <iostream>
#include <gtkmm.h>
int
main( int argc, char* argv[] ){
 try {
  Gtk::Main m( argc, argv ) ;
  Gtk::Window win ;
  m.run( win ) ;
 }
 catch( std::exception const & exc ) {
  std::cout << exc.what() << std::endl ;
  exit( -1 ) ;
 }
 exit( 0 ) ;
}

关于给出编译命令:

$ g++ rngtk1.cpp
rngtk1.cpp:2:10: fatal error: gtkmm.h: No such file or directory
    2 | #include <gtkmm.h>
      |          ^~~~~~~~~
compilation terminated.

更改为“gtkmm.h”没有帮助

以下显示相关包已安装:

$ pacman -Ss gtkmm
mingw32/mingw-w64-i686-gtkmm 2.24.5-2
    C++ bindings for gtk2 (mingw-w64)
mingw32/mingw-w64-i686-gtkmm3 3.24.1-1
    C++ bindings for gtk3 (mingw-w64)
mingw64/mingw-w64-x86_64-gtkmm 2.24.5-2
    C++ bindings for gtk2 (mingw-w64)
mingw64/mingw-w64-x86_64-gtkmm3 3.24.1-1 [installed] <<<<<<<<<<<<<<<<< NOTE
    C++ bindings for gtk3 (mingw-w64)

$ pacman -Ss gtk3
mingw32/mingw-w64-i686-gtk3 3.24.10-3
    GObject-based multi-platform GUI toolkit (v3) (mingw-w64)
mingw32/mingw-w64-i686-gtkmm3 3.24.1-1
    C++ bindings for gtk3 (mingw-w64)
mingw32/mingw-w64-i686-spice-gtk 0.37-1
    GTK3 widget for SPICE clients (mingw-w64)
mingw64/mingw-w64-x86_64-gtk3 3.24.10-3 [installed] <<<<<<<<<<<<<<<<< NOTE
    GObject-based multi-platform GUI toolkit (v3) (mingw-w64)
mingw64/mingw-w64-x86_64-gtkmm3 3.24.1-1 [installed] <<<<<<<<<<<<<<<<< NOTE
    C++ bindings for gtk3 (mingw-w64)
mingw64/mingw-w64-x86_64-spice-gtk 0.37-1
    GTK3 widget for SPICE clients (mingw-w64)

问题出在哪里,如何解决?

最佳答案

包的包含文件不在默认搜索路径中。您将需要通过编译器标志 -I 提供它们。因为它们很多,所以在 MSYS2 中对我有用的最简单方法是使用 pkg-config,它将输出编译和链接所需的所有标志:

g++ $(pkg-config --cflags gtkmm-3.0) -c rngtk1.cpp -o rngtk1.o
g++ rngtk1.o $(pkg-config --libs gtkmm-3.0) -o rngtk1.exe

关于c++ - 尽管已安装,但在 MinGW 中未找到 gtkmm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58040980/

相关文章:

c++ - Qt 从 GUI 线程停止工作线程循环

c++ - 局部数组变量的最大大小

c++ - MinGW 中的 uint24_t 和 uint48_t

css - 如何将特定的 css 类设置为 gtk3 中的小部件? (C)

c++ - 如何强制两个函数参数具有相同的模板类型?

C++ : Catch a divide by zero error

windows - 对 'ff_put_pixels_clamped_mmx' 的 undefined reference

c++ - 如何使用 GTK 将图像添加到按钮

c++ - GTK 3 如何将一个信号连接到多个小部件?

c++ - 使用 OpenCV 丢弃细胞图像中的异常值 SIFT 关键点