4

私は 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
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 などをいじってみてください。em の 1 つが正しいはずです。

編集:追加情報を追加するだけです...リンカーは自動的に /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

そして、この出力をコピーして次の場所に貼り付け ます。to
/etc/dmd.conf
セクション: "[Environment]"
to variable: "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プログラムを次のようにコンパイルできます
。dmdmyprog.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 に答える