我无法安装gtk来开始在Code :: Blocks上使用C ++构建GUI。任何人都可以朝着正确的方向推动我吗?我在联想上运行Windows 10(64位)。
我尝试了安装指南(https://www.youtube.com/watch?v=jvQXvTtSIQo),堆栈溢出(How do you install GTK+ 3.0 on Windows?),官方GTK安装指南(https://www.gtk.org/download/windows.php),书面指南(http://www.tarnyko.net/repo/gtk3_build_system/tutorial/gtk3_tutorial.htm),并且注意到一个非常相似的堆栈溢出(Install GTK for c on Windows 10?)
在此之前,我的PATH环境变量只记录了C:\ Users \ Owner \ AppData \ Local \ Microsoft \ WindowsApps; C:\ Users \ Owner \ AppData \ Roaming \ npm; C:\ Users \ Owner \ AppData \ Local \原子\ BIN;%USERPROFILE%\应用程序数据\本地\微软\ WindowsApps;
我从mingw.org下载了MinGW。这是关于youtube链接的评论,官方比可以安装Code :: Blocks的官方更稳定。我将C:\ MinGW \ bin添加到PATH。
尝试官方GTK安装站点,我下载了MSYS2并使用pacman -Syu安装核心系统软件包和pacman -Su然后更新。那就结束了,所以我认为gtk是正式安装的,我只需要让它与Code :: Blocks交谈。我将C:\ msys64 \ mingw64 \ bin添加到PATH但这似乎没有用。
我尝试在http://www.tarnyko.net/dl/gtk.htm安装GTK 3.6.4的一体化捆绑包,并将其解压缩到C:\ gtk。我现在在PATH中有C:\ gtk \ bin。 GTK应该以一种形式或另一种形式进入我的道路。我可以从CMD运行gtk3-demo和gtk-demo-application但不运行MSYS2。我对此有点困惑。它可能与MSYS2的特定路径变量有关,我想?但它应该在之后搜索系统的路径?而且我不知道如何改变这条特定的道路?可能是另一天的问题。
所以类似的堆栈溢出,youtube和书面教程都说使用pkg-config --cflags --libs gtk+-3.0
来检查合理的输出,看看我是否正确安装了gtk。我安装了
pkg-config-lite避免How to install pkg config in windows?描述的glib循环依赖问题,坦率地说我不明白。我把它添加到C:\ MinGW \ bin到我的路径中。现在我能够运行它,但得到:
Package gtk+-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-3.0' found
我尝试了3.6.4而不是3.0。没有骰子。我只试过3.不。我只能找到gtk3文件,而不是我在任何地方安装的实际版本。 pkg-config --cflags --libs说我需要命名一个库,所以我尝试了gtk hopiing来获取包含它的库。不。其余的教程旨在让Code :: Blocks编译器(我认为)包含gtk。我希望这是唯一的障碍,我将能够得到其余的。但是,如果有人可以帮助我完成剩下的工作,我们将不胜感激。
此时我没有想法。有人能帮助我吗?
感激, 约翰
感谢您撰写https://www.gtk.org/download/windows.php !!我打赌它可以帮助像我这样的很多沮丧的新手。在我完成所有工作后,我会提供更多适当的反馈。如果你可以提供更多帮助,我会坚持编译一个C / C ++程序。在我做到这一点之前,我想非常清楚我采取的确切步骤。步骤名称对应于您的书面说明。
好的,重置一切......
从PATH和计算机中删除了C:/ gtk目录,也就是所有tarnyko文件。
从PATH和计算机中删除C:/ MinGW目录,有效地卸载。我读了你与Simon(Unable to compile code with GTK和https://chat.stackoverflow.com/rooms/156828/discussion-between-liberforce-and-simon)关于MinGW终端(其中包括msys1.0)和MSYS2终端(包括MinGW)之间的混淆。我认为这会更安全。
因此,我在PATH中只有C:\ msys64(以及之前我所拥有的,与GTK无关)。
卸载MSYS2(通过“添加/删除程序”)并使用www.msys2.org上的x86_64重新安装。在pacman -Syu上,我收到错误," msys2-runtime和catgets发生冲突"和" msys2-runtime和libcatgets冲突。"输入y删除两者。
我一直在卸载并重新安装,但我遇到了以下问题...(5/5)升级pacman是100%并且警告弹出: 警告:终止MSYS2而不返回shell并再次检查更新 警告:例如关闭终端窗口而不是调用exit
程序暂停。我认为这意味着关闭窗口。我做了,然后单击确定进行对话"进程正在运行中:无论如何关闭?。"现在打印窗口"收到挂断信号"它不再响应。我使用任务管理器来杀死它。
在桌面应用程序打开MSYS2后,第一个pacman -Syu给了我对话框,选择哪个shell:MSYS2,Mingw-w64 32位,Mingw-w64 64位。我转而进入文件系统并为所有未来的实例打开C:\ msys64 \ msys2_shell.cmd。
Ran pacman -Syu完成安装包。我再次重新启动MSYS2,并运行pacman -Su以显示
:: Starting core system upgrade...
there is nothing to do
:: Starting full system upgrade...
there is nothing to do
pacman -Syuu表示:
:: Synchronizing package databases...
mingw32 is up to date
mingw64 is up to date
msys is up to date
pacman -Su,pacman -Sy和pacman -Suu同样表现出一切正常。已关闭并重新打开C:\ msys64 \ msys2_shell.cmd
pkg-cofig只提供" bash:pkg-config:命令未找到。"所以我运行pacman -S pkg-config并开始工作。但是,无法找到https://github.com/msys2/msys2/wiki/MSYS2-installation中提到的update-core,而pacman -S update-core将无法正常工作。 pacman -Ss核心出现了:
msys/coreutils 8.26-2 (base) [installed]
The basic file, shell and text manipulation utilities of the GNU operating
system
和其他似乎无关的文件。 pacman -Ss核心的结果似乎也无关紧要。
pacman --version显示:
.--. Pacman v5.0.1 - libalpm v10.0.1
/ _.-' .-. .-. .-. Copyright (C) 2006-2016 Pacman Development Team
\ '-. '-' '-' '-' Copyright (C) 2002-2006 Judd Vinet
'--'
This program may be freely redistributed under
the terms of the GNU General Public License.
Ran" pacman --needed -S bash pacman pacman-mirrors msys2-runtime"透露:
warning: bash-4.4.019-2 is up to date -- skipping
warning: pacman-5.0.1-5 is up to date -- skipping
warning: pacman-mirrors-20160112-1 is up to date -- skipping
warning: msys2-runtime-2.10.0-2 is up to date -- skipping
there is nothing to do
我退出了所有msys shell,并运行了C:\ msys64 \ autorebase.bat,尽管不在32位系统上。我相信当它重新打开msys2_shell.bat时会有一个错字,我没有。我打开了msys2_shell.cmd。我再次使用pacman -Suu来揭示一切都没问题。
打开C:\ msys64 \ msys2_shell.cmd并运行" pacman -S mingw-w64-x86_64-gtk3" (GTK + 3包)和" pacman -S mingw-w64-x86_64-toolchain base-devel" (用于开发其他语言的GTK + 3应用程序的软件包)(在提示时默认为所有安装)。
重新启动的电脑。打开C:\ msys64 \ msys2_shell.cmd。关注https://developer.gnome.org/gtk3/stable/gtk-getting-started.html。
将简单窗口教程文件放在C:\ Users \ Owner \ Desktop \ test_code \ example-0.c中。当运行gcc pkg-config --cflags gtk + -3.0 -o example-0 example-0.c pkg-config --libs gtk + -3.0时,我的原始问题出错了。二手" pacman -Ss gtk3"看到我觉得我需要的两个包裹。 Ran" pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-gtkmm3"
要向Simon回答有关Unable to compile code with GTK同样错误的问题,即使在关闭并重新打开C:\ msys64 \ msys2_shell.cmd后,pkg-config --list-all | grep gtk
也不会返回任何内容。 "哪个gcc"返回:
其中:没有gcc 在(在/ usr / local / bin目录:在/ usr / bin中:/斌:/选择/斌:/ C /的Windows / System32下: /c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/: 的/ usr /斌/ SITE_PERL:在/ usr / bin中/ vendor_perl:在/ usr / bin中/ core_perl)
我在C:\ msys64 \ mingw64 \ include下看到gtk-3.0。我不知道如何将其添加到路径中。 " echo $ PKG_CONFIG_PATH"返回:
/usr/lib/pkgconfig:/usr/share/pkgconfig:/lib/pkgconfig
我需要在Mingw-w64 64位shell中打开MSYS2。这可以通过MSYS2的桌面应用程序执行,该应用程序会提示您要打开三个shell中的哪一个:MSYS2,Mingw32和Mingw64。具体来说,我使用命令mingw-w64-x86_64-toolchain
安装gtk意味着它只能以这种方式访问。
这个shell中的命令显示我确实有gtk:
$ pkg-config --modversion gtk+-3.0
- > 3.22.29
$ which gcc
- > /mingw64/bin/gcc
我引用https://github.com/msys2/msys2/wiki/MSYS2-introduction来学习文件系统/驱动器安装语法。我将把https://developer.gnome.org/gtk3/stable/gtk-getting-started.html中的示例代码放在`/c/Users/Owner/Desktop/test_code/example-0.c'中。我刚刚使用了我最喜欢的IDE,Atom,但任何文本编辑器都可以。
打开MSYS2的Mingw64 shell,cd /c/Users/Owner/Desktop/test_code/
,用gcc \
编译pkg-config --cflags gtk + -3.0` -o example-0 example-0.c`pkg-config --libs gtk + -3.0``,并使用./example-0
我进入了Code :: Blocks。去设置>编译器...确保使用Selected compiler下的下拉框选择GNU GCC Compiler,并在我第一次安装Code :: Blocks时因为复杂而单击Reset Defaults。编译器标志下的复选框应该在重置后全部为空,因此我检查了#34;让g ++遵循C ++ 14 ISO C ++语言标准[-std = c ++ 14]"在General和"启用所有常见的编译器警告(覆盖许多其他设置)[-Wall]"在警告下。
在Compiler Flags的旁边,我转到了链接器设置并将文本添加到其他链接器选项。我通过运行pkg-config --cflags gtk+-3.0
:
-mms-bitfields -pthread -mms-bitfields -IC:/msys64/mingw64/include/gtk-3.0 -IC:/msys64/mingw64/include/cairo -IC:/msys64/mingw64/include -IC:/msys64/mingw64/include/pango-1.0 -IC:/msys64/mingw64/include/fribidi -IC:/msys64/mingw64/include/atk-1.0 -IC:/msys64/mingw64/include/cairo -IC:/msys64/mingw64/include/pixman-1 -IC:/msys64/mingw64/include -IC:/msys64/mingw64/include/freetype2 -IC:/msys64/mingw64/include -IC:/msys64/mingw64/include/harfbuzz -IC:/msys64/mingw64/include/libpng16 -IC:/msys64/mingw64/include/gdk-pixbuf-2.0 -IC:/msys64/mingw64/include/libpng16 -IC:/msys64/mingw64/include -IC:/msys64/mingw64/include/glib-2.0 -IC:/msys64/mingw64/lib/glib-2.0/include -IC:/msys64/mingw64/include -LC:/msys64/mingw64/lib -lgtk-3 -lgdk-3 -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lz -lpangowin32-1.0 -lpangocairo-1.0 -lpango-1.0 -lfribidi -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl
说明:从控制台编译时,我使用了包含文本/
pkg-config --cflags gtk + -3.0``的命令。反引号意味着在更高级别的编译命令之前运行pkg-config --cflags gtk+-3.0
,并插入更高级编译命令中出现的任何文本。 Code :: Blocks需要链接器设置下的文本。
在设置>编译器......,在“编译器设置”旁边,我点击了搜索目录。我知道你需要在这里做一些工作。在此之后,您将返回链接器设置完成,您的Code :: Blocks将准备就绪!
如果有人可以在这里帮助我,或者如果我弄明白的话,我很乐意完成,以防这对后代有所帮助。我有GTK编译,现在已经足够好了。
答案 0 :(得分:1)
好的,让我们从头开始。
所以:
pkg-config