Gtk3在windows上开发

时间:2014-01-20 14:35:15

标签: c++ user-interface gtk3

我是(相对)新的C ++和SO。

将控制台应用程序的创造力发挥到极致,我非常狂热的想法现在想知道如何编写GUI。我做了一些研究,决定使用GTK而不是Qt,因为有选择的自由,没有任何附加条件,有关慢速互联网和下载0.6GB的东西,我可以选择Qt。

在Gtk上建立'Hello World'是一个残酷的48小时。这是我发脾气。我正在使用Visual Studio 2010.也许这是我所有困境的根源。似乎Gtk是用于C而不是C ++。在解决了包含头文件和一些臭名昭着的glibconfig.h缺失的问题之后(我从互联网上下载只是为了发现它应该是生成的文件),编译器抛出了语法错误,特别是在一个gatomic.h

我怀疑每个我设法解决的问题都会出现10个错误。这就是你进来的地方。你用Gtk开发c ++吗?如果没有,为什么呢?你会推荐什么?你在Windows上使用Gtk吗?怎么可能?请详细说明。

是否可以制作使用C ++代码和Python / VB GUI的跨平台应用程序?

您的回答将受到衷心的感谢。

2 个答案:

答案 0 :(得分:3)

首先,一般说明:Gtk主要是作为Gnome的工具包开发的,我认为可以公平地说,主要关注的是Linux上的高质量,而其他平台则是二等公民。通过查看与Windows和MacOS的本机外观的集成,这可能是最明显的。如果您正在寻找在所有主要平台上表现同样出色的工具包,我建议您重新考虑Qt。

就您更具体的问题而言:

<强> C / C ++

Gtk是用C语言编写的,因此有一个C API。如果您正在寻找C ++ API,请查看Gtkmm绑定。请注意,您还可以在C ++应用程序中使用C API。

<强> glibconfig.h

我不知道您是否尝试过自己编译Gtk,但是获取Gtk3 for Windows的最简单方法是从http://www.gtk.org/download/win32.php下载预编译的一体化软件包(其中包括glibconfig.h)丢失)。

何时以及如何使用Gtk以及使用何种语言

如上所述,Gtk的主要用户是为Gnome桌面环境开发应用程序的人。现在大多数跨平台应用程序都使用Qt,因为Windows和MacOS的质量与这些平台上的Gtk相比要高。

关于使用什么语言,Gtk的优势在于存在许多语言(包括C ++和Python)的绑定,因此您当然不限于C语言。

使用C ++开发时,我个人喜欢Gtkmm的东西是它使用标准库,而不是Qt,它有自己的数据结构实现等(原因是Qt早于STL一般的时间)可在所有主要平台上使用。

如何使用Gtk:与具有优秀Qt Creator的Qt相反,Gtk在某种程度上缺乏专门设计的IDE以便于开发。您将获得的关闭是使用Glade进行界面设计,以及您选择的文本编辑器或IDE进行编码,但该选择因您所使用的平台而异。很明显,正如您可能已经注意到的,将Gtk集成到选择的环境中通常需要一些工作(以及一些更多的技术知识)。再说一次,如果您正在寻找一个易于设置和使用的环境来开发GUI应用程序,我只需要使用Qt和Qt Creator。

跨平台应用

首先,Visual Basic不是跨平台的。但总的来说,使用各种语言进行跨应用程序开发有很多可能性。

答案 1 :(得分:0)

几个月前,当gtk3刚刚出现在Windows上时,我必须让一个gtk3项目在Windows上工作。我在Visual Studio下编译它时遇到了问题,并在此处发布了一个问题,specifically this one

以下是我如何在Windows上使用它:

  1. 从gtk.org
  2. 下载适用于Windows的一体化软件包
  3. 安装等,在项目中设置include / link dirs。 (就个人而言,我在项目文件夹中转储了gtk的文件夹,指向&#34; include&#34;作为include dir和&#34; lib&#34;作为链接目录,然后继续移动任何文件/编译器找不到的文件夹&#34; include&#34;)
  4. 的根目录
  5. 如果没有自动设置,请根据需要添加include和link dirs,直到编译器找到所有文件。
  6. 如果使用MinGW进行编译,那么它将在那时成功。
  7. 如果使用Visual Studio,则必须按照gtk邮件列表中的说明修改gtk标头:
      

    在gutils.h第82和122行以及gstring.h第129行中,更改   &#34;静态内联&#34;到&#34;静态__inline&#34;。   大段引用   请注意,修改不会影响MinGW的编译能力。

  8. 我已经在两个窗口(使用Visual Studio或Code :: Blocks)和linux上成功编译了我的gtk3项目,而没有编写特定于平台的代码。在发货时,不要忘记在程序中包含所需的运行时dll。