如何在Win7和dmd(D2)中使用gtkD?

时间:2012-01-03 20:32:57

标签: windows-7 d dmd gtkd

我已下载gtkD-1.5.1并已解压缩到某个gtkD目录。接下来我该怎么办?我不明白我是否必须编译并将其链接到某个lib或只是在我的代码中链接到它?


编辑:(@ dsimcha)

gtkD主目录中的命令dsss build给了我这个:

Could not detect versions.
Could not detect versions.
Could not detect versions.
Could not detect versions.
Could not detect versions.
undemofy

Could not detect versions.
Could not detect versions.
atk => DO-atk

cairo => DO-cairo

gdk => DO-gdk

gdkpixbuf => DO-gdkpixbuf

gio => DO-gio

glade => DO-glade

glib => DO-glib

gobject => DO-gobject

gthread => DO-gthread

gtk => DO-gtk

gtkc => DO-gtkc

pango => DO-pango

但是没有创建lib?

5 个答案:

答案 0 :(得分:2)

我在Windows上使用DSSS时遇到问题,您可以尝试使用Bud/Build

确保build.exe位于您的路径中,然后在gtkD / src / build文件夹中打开命令行。然后运行build gtkD.brf以创建GtkD.lib

根据您的DMD版本,您会收到很多错误。我得到的大多数是typedef被弃用。发生的任何文件(它会告诉你)我只是将typedef重构为别名,它运行正常。我得到的另一个错误是src/gtk/Toolbar.d和一个模糊的虚函数getOrientation()。要解决此问题,请转到src/gtk/OrientableIF.d/src/gtk/ToolShellIF.d并注释掉getOrientation方法。

使用最新版本的dmd(2.059),glib/DateTime.d将无法编译。要编译此文件,只需注释掉方法override hash_t toHash()

编译项目时,请使用dmd <source files> -L <C:\Path\To\File>\GtkD.lib

答案 1 :(得分:1)

您需要将gtkD编译为二进制文件。执行此操作的标准方法是DSSS。基本上,下载并安装DSSS,然后从主gtkD目录中执行dsss build

编辑:

使用DSSS构建gtkD之后,gtkD目录中会有一堆.lib文件。您将这些静态链接到您的应用程序中。此外,您需要在Windows安装中安装GTK +库。

答案 2 :(得分:1)

构建图书馆: 我建议看看build guidelines for the project这里是构建库的步骤:

  
      
  1. 获取最新的稳定版DSSS并将其安装在您的系统上。
  2.   
  3. [可选]。更新项目根目录中的dsss.conf文件   适合您的需求。否则要注意'defaulttargets'   键。如果您需要标准的gtkD构建/安装,则为默认值   很好。
  4.   
  5. 构建gtkD。转到项目的根目录(此文件所在的位置)   找到并运行以下命令:

    $ dsss build
    
  6.   
  7. 您现在可以将库安装到实时文件系统。来自   项目的根目录,运行:

    $ dsss install **--prefix=/usr/local**
    
         

    不要忘记根据需要设置前缀。 “在/ usr /本地”   是一个理智的默认值,应该可以在大多数系统上运行而无需进一   行动。如果您选择的前缀不在PATH上,请不要忘记   更新您的环境变量。导入文件也会得到   自动安装到所选前缀。注意:root访问权限可以   需要根据您的系统设置完成此步骤。

  8.   
  9. 使用任何提供的dsss.conf文件构建您自己的程序   的演示文件夹。特别注意以前的buildflags   建立演示。 Linux系统上需要“-L-ldl”。
  10.   
  11. 玩得开心!
  12.   

使用资料库: 之后,您可以在自己的程序depending on how your building it中以几种不同的方式使用库:

如果您使用DSSS构建自己的项目,那么您需要做的就是用以下代码导入模块:

import gtk.MainWindow;
import gtk.Label;
import gtk.Main;

void main(string[] args)
{
    Main.init(args);
    MainWindow win = new MainWindow("Hello World");
    win.setDefaultSize(200, 100);
    win.add(new Label("Hello World"));
    win.showAll();

    Main.run();
}

你的dss.conf看起来像这样:

name = helloworld
[helloworld.d]
target = helloworld

并使用常规步骤来构建和安装它:

$ dsss build
$ dsss install

修改: 我刚刚注意到你想直接使用DMD来编译你可以使用的项目:

dmd helloworld.d -ofhelloworld -L+gtk.lib

请注意,不建议大型项目使用此构建样式,并且只要可行,您应该使用DSSS。

答案 3 :(得分:1)

Imanage使用GtkD而不生成lib文件,使用rdmd。

  1. 您必须安装Gtk + 2运行时
  2. 将GtkD源代码下载到某个目录
  3. 运行rdmd --build-only -I / src
  4. rdmd将单独自动生成GtkD和您的项目代码,省去了制作库并手动链接的需要。

答案 4 :(得分:0)

似乎最新版本并不总是开箱即用,你最好使用主干HEAD,转到http://www.dsource.org/projects/gtkd/browser/trunk并点击底部的Zip Archive链接,这个版本对我有用是r952

下载bud/build(版本3.04工作正常)并将其称为此类     build gtkD.brf

错误

  

无法检测版本

是由路径中没有dmd引起的。

我尝试了当前最新的gtkD 1.5.1,但后来我遇到了typedef问题,手动修复后我得到了XOverlay问题,经过大量搜索后我发现它们都修复了SVN所以我得到了主干HEAD,开箱即用。