我是D的新手,我想尝试一下gtkd。我在arch linux上,安装了dmd2-complete (dmd 2.0.56)和gtkd-svn (针对D2构建的gtkd)软件包。我还验证了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发布于 2011-11-25 18:26:44
好的,我在“相关问题”侧边栏找到了答案。把这个留在这里,因为谷歌在我搜索的时候没有打开other thread,它可能会更幸运地使用这个。您需要将链接器选项作为-L-l传入,特别是在本例中
dmd -L-lgtkd -L-ldl hellogtk.d一切都运行得很好。
发布于 2011-11-25 18:26:21
dmd在-L标志之后将标志传递给链接器。
所以我不能确定,因为我没有使用过gtkD,但是像-L-lgtkd这样的代码应该可以解决这个问题。
如果没有,可以使用-L-lgtkdg1和其他东西。他们中肯定有一个是对的。
编辑:只是添加额外的信息...链接器将自动搜索/usr/lib和其他一些位置。我相信链接器操作与C语言的链接过程是相同的,因此可以通过查看C语言的链接来收集更多的信息。
发布于 2013-03-09 00:19:06
我在Gentoo上编程,我手动编译dmd和gtkD。
因此,在开始时,我输入:
echo $PKG_CONFIG_PATH我什么也得不到。
我这样做:在~/.bashrc:中
( ... )
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig因为我们需要的都有了。
然后我输入:
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 mypro.d
这就是全部!
附注:
对不起,我的英语不好。
https://stackoverflow.com/questions/8267556
复制相似问题