начало работы с gtkd

Я новичок в D и хочу поэкспериментировать с gtkd. Я использую Arch Linux и установил пакеты dmd2-complete (dmd 2.0.56) и gtkd-svn (gtkd, созданный для 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

person Martin DeMello    schedule 25.11.2011    source источник


Ответы (4)


Итак, я нашел ответ на боковой панели «похожие вопросы». Оставив это здесь, поскольку Google не открыл другая тема, когда я искал, и, возможно, с этой повезет больше. Вам нужно передать параметры компоновщика как -L-l, особенно в этом случае

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

и все прекрасно работает.

person Martin DeMello    schedule 25.11.2011

dmd передает флаги компоновщику после флага -L.

Так что я не могу сказать наверняка, так как я не использовал gtkD, но что-то вроде -L-lgtkd должно помочь.

если нет, поэкспериментируйте с -L-lgtkdg1 и прочим... один из них обязательно окажется правильным.

Редактировать: просто добавить дополнительную информацию... компоновщик будет автоматически искать /usr/lib и несколько других мест. Я считаю, что действие компоновщика идентично процессу компоновки C, поэтому больше информации можно почерпнуть, глядя на то, как компонуется C.

person 1100110    schedule 25.11.2011
comment
спасибо, меня сбил с толку синтаксис -L-l! Я пробовал все варианты -Lgtkd, какие только мог придумать. - person Martin DeMello; 25.11.2011

Я программирую на 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
в раздел: "[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

Вот и все!

P.S.
Извините за мой английский.

person Community    schedule 08.03.2013

Вы также можете использовать pkg-config:

dmd `pkg-config --cflags --libs gtk-2`  hellogtk.d
person o3o    schedule 21.11.2012