Начало работы с GTKD - PullRequest
       22

Начало работы с GTKD

4 голосов
/ 25 ноября 2011

Я новичок в 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

Ответы [ 4 ]

5 голосов
/ 25 ноября 2011

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

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

и все работает хорошо.

3 голосов
/ 25 ноября 2011

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

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

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

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

2 голосов
/ 08 марта 2013

Я программирую на 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 myprog.d

Это все!

Постскриптум
Извините за мой английский.

1 голос
/ 22 ноября 2012

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

dmd `pkg-config --cflags --libs gtk-2`  hellogtk.d
...