2011-11-25 79 views
4

我是D新手,想要尝试gtkd。我在arch linux上安装了dmd2-complete(dmd 2.0.56)和gtkd-svn(针对D2构建的gtkd)包。我也证实D本身工作正常(编译并运行一个基本的writefln("hello world");程序)。gtkd入门

现在我正在尝试启动gtkd并运行,并且很难编译和链接示例中的基本helloworld程序。

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(); 
} 

具体来说,我需要通过哪些选项传递给dmd才能链接?几乎所有我能找到的文档都完全跳过了这一点。

gtkd-svn包已安装在下列/ usr/lib中:

/usr/lib/libgtkd.a 
/usr/lib/libgtkdgl.a 
/usr/lib/libgtkdsv.a 

回答

5

好的,所以我在“相关问题”边栏中找到了答案。由于谷歌在搜索时没有调出other thread,所以将它放在这里,这可能会带来更好的运气。您需要在连接选项-L-l传递,特别是在这种情况下

dmd -L-lgtkd -L-ldl hellogtk.d 

,一切都很好地工作。

3

DMD -L标志之后经过标志给链接器。

所以我不能肯定地说,因为我没有使用gtkD,但类似-L-lgtkd 应该做的伎俩。

如果没有,玩弄-L-lgtkdg1和东西..他们之一肯定是正确的。

编辑:只需添加额外的信息... 链接器将自动搜索/ usr/lib和其他一些地方。 我相信链接器动作与C链接过程相同,因此可以从查看C链接的方式收集更多信息。

+0

谢谢,这是-L-l语法让我绊倒!我试过-Lgtkd上的所有变种,我都能想到。 –

1

您也可以使用pkg-config

dmd `pkg-config --cflags --libs gtk-2` hellogtk.d 
2

我在的Gentoo编程,我手动编译DMDgtkD
因此,在一开始我键入:

echo $PKG_CONFIG_PATH 

这让我什么都没有。
我这样做: 在~/.bashrc:

(...) 
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig 

因为所有我们需要的。
然后I型:

pkg-config gtkd-2 --cflags --libs 

和本我复制并粘贴到输出:
/etc/dmd.conf
章节: “[环境]”
到变量: “DFLAGS”(最后 )。
干净安装DMD和gtkD(通过复制和粘贴)应该看起来像:
(/etc/dmd.conf)

(...) 
[Environment] 
DFLAGS=-I/usr/include/phobos2 -I/usr/include/druntime -L--no-warn-search-mismatch -L-- export-dynamic -L-lrt -I/usr/local/include/d/gtkd-2/ -L-L/usr/local/lib/ -L-lgtkd-2 -L-ldl 

在现在我可以编译我的d程序那样:
dmd myprog.d

这就是全部!

P.S.
对不起,我的英文。