关于C#:如何在Windows上安装GTK 3.0?

How do you install GTK+ 3.0 on Windows?

试图在Codeblocks Win7上设置GTK 3.0。很难找到确切的操作方法。

GTK网站将您定向到msys2。似乎曾经在GTK站点上直接下载了一个不再存在的多合一Windows捆绑软件。

按照说明安装和更新了msys2,在安装的文件或GTK指导您访问的mysys网站上,我没有看到对GTK的引用。

就不必要和愚蠢的不清楚来做应该很简单的事情而言,这似乎是linuxy。也许我错过了一些东西,但它不应该像下载压缩文件夹,提取并设置路径那样简单吗?

以这种速率id可以更快地学习C并使用Qt。

问题在标题中,我很惊讶,我不得不问这个问题,似乎Google应该完全涵盖了这个问题,但是我发现的所有内容都与GTK网站上不再提供的下载有关。我找不到有关msys2和GTK 3.0的信息。

预先感谢。


Welcome, Google users from the future! Since I wrote this answer, the GTK+ website now has official installation instructions that cover what I said below but with more details and less pain. Refer to that page instead. The answer below has been kept for historical reasons.

GTK网站的问题在于,没有人可以维护这些二进制发行版。 Windows以前的二进制发行版是针对GTK 3.6的,我相信应该早在2012年就发布了。当前版本是3.16,而3.18距离发布实际上还有几天的时间。 MSYS2是唯一受支持的安装机制,并且已足够频繁地进行更新。

也就是说,如果使用MSYS路由,则需要单独安装GTK。 MSYS并不随GTK一起提供。以

开头

1
pacman -Ss gtk3

这应该为您提供可能安装的软件包的列表,包括32位和64位MinGW的GTK库。我现在忘记了他们的确切名字。

找到想要的那个后,请使用

1
pacman -S package-name-here

进行安装。然后,从"开始"菜单的MSYS文件夹中打开MinGW 32位或64位Shell,以开始开发。

如果要使用传统的IDE进行GTK编程,请查找GNOME Builder或Anjuta。对于图形GUI设计器,请查找Glade。


Hallelujah,我发现可以在Windows上使用GTK的理智的非Linux版本。

有人善良地将GTK文件上传到了dropbox,只需下载并解压缩即可。这是其他任何遇到此GTK / msys2灾难的人的链接。

https://www.dropbox.com/sh/8d1qbh5dsp044on/UgkALzhlqH

这些文件确实应该在GTK Windows下载页面上提供,这真是令人难以置信。

关闭该线程,打开窗口。


我同意GNOME社区对此有点无礼。
他们使GTK的安装几乎与Linux的安装相同,这有点像在mcdonalds中为您提供百事可乐。

最糟糕的是,它迫使您使用自己的废话,甚至他们告诉您选择哪种IDE,如何构建应用程序,应用程序中将包含什么。实际上总是更喜欢Linux,我只是不偏不倚)

现在,您已经明确提到了代码块。
不要使用code :: block的GTK项目,它已经过时了。
您当然可以修改脚本或创建自己的脚本,但是它仍在继续
为了让您放慢脚步,我们,程序员珍视我们的时间(我认为)

安装GTK3版本(至今)的过程。 Windows 7上与Code :: Blocks一起使用的3.22.16相当简单。
首先下载MSYS2并在msys2 shell中键入:

pacman -S mingw-w64-x86_64-gtk3

(输入y确认)
然后

pacman -S mingw-w64-x86_64-toolchain base-devel
(以确保您具有pkg-config的预编译二进制文件,并确保您具有最新版本的gcc)

然后,首先在CodeBlocks中进行一些工作
在Codeblocks的编译器设置->工具链可执行文件中设置新的编译器。新的编译器应位于C:\\msys64\\mingw64
(C或您在其中安装了MSYS的磁盘)

然后在Codeblocks的编译器设置中链接一些库->搜索目录:
enter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <gtk/gtk.h>

static void activate (GtkApplication* app, gpointer user_data)
{
    GtkWidget *window;

    window = gtk_application_window_new(app);
    gtk_window_set_title(GTK_WINDOW (window),"Window");
    gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
    gtk_widget_show_all(window);
}

int main (int argc, char *argv[])
{
    GtkApplication *app;
    int status;

    app     = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE);
    g_signal_connect(app,"activate", G_CALLBACK (activate), NULL);
    status  = g_application_run(G_APPLICATION (app), argc, argv);
    g_object_unref(app);

    return status;
}

,结果如下:enter


几天前,我向gtk的一位维护者发送了一封电子邮件,以寻求vs 2017的帮助,这是一封信。之后,我选择在Windows

上使用gtk 2.0

这是我的

我安装了msys2,我注意到,有很多头部填充
在此文件夹.\\msys64\\mingw64\\include下,我想知道是否
可以直接将msys64下的那些文件包含到vs 2017中。让vs
2017在文件夹下使用lib。像这样......

这是他发来的

首先,除非您确定,否则我建议您不要使用msys构建

-您不要尝试在代码中使用FILE结构
由GLib等使用
-您使用的glibconfig.h匹配中的glibcocnfig.h.win32
您正在使用的GLib版本的源tarball,因为
针对GLib构建的所有内容都将受到它的影响。

如果您仍然决定沿这条路线走,则需要指定
链接时的库。参见Linker->Input->Additional Dependencies
您至少需要以下用分号分隔的.lib files

gtk-3.0.lib (or gtk-3.lib)

gdk-3.0.lib (or gdk-3.lib)

gdk_pixbuf-2.0.lib

pangocairo-1.0.lib

pango-1.0.lib

atk-1.0.lib

gio-2.0.lib

gobject-2.0.lib

gmodule-2.0.lib

glib-2.0.lib

cairo-gobject.lib

cairo.lib

intl.lib

以及可能的fontconfig.libfreetype.lib,可能是msys64
内部版本包括对它们的支持。

您还需要链接到可能用于的其他任何库
您的任务。在这些库之前加上尾随;
%(AdditionalDependencies) (don't remove %(AdditionalDependencies))

祝福加油!

好吧...在与gtk 3.x斗争之后,我花了几天时间将程序移植到Windows,我发现您可以使用gtk 2.x来避免所有这些麻烦。这些是一些称为All-in-one bundle的旧文件
尽管了解这一点很重要,但是它存在一些安全问题,(此外,您还需要将其重写为gtk 2.0)
但是,如果您主要使用linux,并且只想在Windows上运行,我建议您对gtk 2.x使用旧的All-in-one bundle
例如

https://download.gnome.org/binaries/win32/gtk /2.24/gtk -bundle_2.24.10-20120208_win32.zip.mirrorlist


如果您正在寻找除了Msys2之外还提供与MSVC兼容的最新GTK3内容的项目,则应检出gvsbuild和Microsoft的vcpkg。
在引擎盖下,前者使用python,而后者使用cmake。