Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 尽管安装了gtkmm,但在MinGW中未找到_C++_Mingw_Gtk3_Gtkmm3 - Fatal编程技术网

C++ 尽管安装了gtkmm,但在MinGW中未找到

C++ 尽管安装了gtkmm,但在MinGW中未找到,c++,mingw,gtk3,gtkmm3,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::except

我试图编译下面的简单文件(来自其中一个教程站点的演示代码),但是尽管安装了
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 ) ;
}
$cat rngtk1.cpp
#包括
#包括
int
main(int argc,char*argv[]){
试一试{
Gtk::主m(argc,argv);
Gtk::窗口赢;
m、 跑(赢);
}
捕获(标准::异常常量和exc){

std::cout包的include文件不在默认搜索路径中。您需要通过编译器标志
-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

是的,它创建了一个可执行文件,但是exe文件没有运行,因为它没有找到
libgtkmm-3.0-1.dll
。在哪里可以找到这个文件?库
libgtkmm-3.0-1.dll
位于
/mingw64/bin
中,当我使用“MSYS2 MinGW 64位”启动MSYS2时,它会自动添加到
$PATH
“开始”菜单中的启动器。如果以其他方式启动MSYS2 shell,则需要手动将
/mingw64/bin
添加到
$PATH
。我的意思是可执行文件在传输到其他Windows系统时不会运行。使用exe文件复制
libgtkmm-3.0-1.dll
会导致错误,显示许多dll丢失。是否需要复制所有dll将我的exe文件分发给我的朋友时,这些dll也会出现?是否有任何方法将所有需要的dll文件与exe文件静态链接?是的,我认为最常见的方法是将这些dll与应用程序捆绑在一起,但您可能还需要其他文件。Gtk+很大。这似乎相关:
$ 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)
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