2011-11-25 76 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.
對不起,我的英文。