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

Я новичок в D и хочу поэкспериментировать с gtkd. Я нахожусь на арке Linux, и установил dmd2-complete (дмд 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 ответа

Решение

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

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

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

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

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

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

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

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

Это все!

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

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

dmd `pkg-config --cflags --libs gtk-2`  hellogtk.d
Другие вопросы по тегам