我已经在Windows 7上安装了MSYS2并且我已经成功执行了
pacman -S mingw-w64-x86_64-gtk3
(上述内容按照为 Windows 设置 GTK 的步骤 2)和
pacman -S mingw-w64-x86_64-toolchain base-devel
但是当我尝试使用 编译 hello world
时gcc -o hello-world-gtk hello-world-gtk.c `pkg-config --cflags --libs gtk4`
我得到以下信息
Package gtk4 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk4.pc'
to the PKG_CONFIG_PATH environment variable
Package 'gtk4', required by 'virtual:world', not found
bash: gcc: command not found
如果我尝试从 MinGW 64 位 shell 输出是
MyHome@MyHome-PC MINGW64 ~
$ gcc -o hello-world-gtk hello-world-gtk.c `pkg-config --cflags --libs gtk4`
Package gtk4 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk4.pc'
to the PKG_CONFIG_PATH environment variable
Package 'gtk4', required by 'virtual:world', not found
hello-world-gtk.c:1:10: fatal error: gtk/gtk.h: No such file or directory
1 | #include <gtk/gtk.h>
| ^~~~~~~~~~~
compilation terminated.
我也查过
$ echo $PKG_CONFIG_PATH
/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig
上述内容按照为 Windows 设置 GTK 的步骤 2
他们的网站上似乎有一些“过时的说明”。 我实际上必须设置
以下软件包
pacman -S mingw-w64-x86_64-gtk4
一些可能的运行时问题
---------------------------
hello-world-gtk.exe - Errore di sistema
---------------------------
Impossibile avviare il programma perché libgio-2.0-0.dll non è presente nel computer. Per risolvere il problema, provare a reinstallare il programma.
看着这个问题
我尝试将C:\msys64\mingw64\bin
添加到我的系统
PATH
:它没有显示运行时错误,但exe确实无法正常工作(应用程序没有按预期显示)。AFAICS gtk4-demo-application
本身在我的 Windows 上运行得不好,所以最后我不得不恢复到 GTK3,并编译了示例
GTK3 入门
gcc `pkg-config --cflags gtk+-3.0` -o example-1 example-1.c `pkg-config --libs gtk+-3.0`
上面的编译并运行
很好。 运行时问题的解决方案
无需 MSYS2。 这个注释非常重要
它在我的 VirtualBox 机器上开箱即用,但是在我的配备英特尔 GPU 的物理 PC 上,我在启动时崩溃:
这可以通过使用 cairo 渲染来解决:
Unhandled exception at 0x5211345E (ig4icd32.dll) in gtk4-demo.exe: 0xC0000005: Access violation reading location 0x00000050
C:\src\gtk>set GSK_RENDERER=cairo C:\src\gtk>C:\gnome\bin\gtk4-demo.exe
结论:MSYS2 上 GTK4 的程序
set GSK_RENDERER=cairo
与
同样可以运行在MSYS2下编译的可执行文件,因此最终的解决方案包括 安装
pacman -S mingw-w64-x86_64-gtk4
C:\msys64\mingw64\bin;
PATH
添加新的 GSK_RENDERER
cairo
使用MSYS2 MinGW 64位shell编译(如GTK4)并运行exeexecute_process
可能会导致问题:
execute_process(COMMAND bash -c "pkg-config --modversion gtk4"
OUTPUT_VARIABLE gtk4_version
RESULT_VARIABLE gtk4_failure)
message(STATUS "The gtk4 version is: ${gtk4_version}")
if(NOT ${gtk4_success} EQUAL 0)
message("The shell command failed with error: ${gtk4_failure}")
endif()
如果您的 CMakeLists 有一个execute_process,它尝试获取有关 gtk4 的信息但失败,它可能会将以下内容写入 stdout。
Package gtk4 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk4.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk4' found