4

我是 D 新手,想尝试一下 gtkd。我在 Arch linux 上,并安装了dmd2-complete(dmd 2.0.56) 和gtkd-svn(gtkd built against D2) 包。我还验证了 D 本身工作正常(编译并运行了一个基本writefln("hello world");程序)。

现在我正在尝试启动并运行 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
4

4 回答 4

5

好的,所以我在“相关问题”侧边栏中找到了答案。把这个留在这里,因为谷歌在我搜索时没有提出另一个线程,而且这个线程可能会更好。您需要将链接器选项作为 传递-L-l,特别是在这种情况下

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

一切都很好。

于 2011-11-25T10:26:44.083 回答
3

dmd 在 -L 标志之后将标志传递给链接器。

所以我不能肯定地说,因为我没有使用过 gtkD,但是像 -L-lgtkd 这样的东西应该可以解决问题。

如果没有,请使用 -L-lgtkdg1 之类的东西..其中一个肯定是正确的。

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

于 2011-11-25T10:26:20.927 回答
2

我在Gentoo上编程,我手动编译dmdgtkD
所以,一开始我输入:

echo $PKG_CONFIG_PATH

这让我一无所获。
我这样做:在~/.bashrc:

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

因为有我们需要的一切。
然后我输入:

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

并将此输出复制并粘贴到:
/etc/dmd.conf
到部分:“[Environment]”
到变量:“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

就是这样!

PS
对不起我的英语。

于 2013-03-08T16:19:06.097 回答
1

您也可以使用pkg-config

dmd `pkg-config --cflags --libs gtk-2`  hellogtk.d
于 2012-11-21T23:14:34.303 回答