Ответ 1
Можно вызвать библиотеки C из D. Что вам нужно сделать, это преобразовать файлы заголовков C в D. По большей части это довольно просто, и существует трудная в использовании инструмент командной строки, чтобы помочь автоматизировать процесс. Это никогда не работало для меня ни на чем, кроме игрушечных примеров, но это могло бы стать хорошим началом увидеть те преобразования, которые нужно сделать. Просто поставьте фрагмент, с которым у вас возникли проблемы с переводом в заголовок сам по себе и посмотрите, что с ним делает htod.
Самая большая проблема, с которой вы обычно сталкиваетесь, - это творческое использование препроцессора C. Некоторые вещи могут быть превращены в операторы version() в D, но не все.
Что касается собственно компиляции и связывания с кодом, на unix-подобных платформах, я думаю, вы можете скомпилировать и связать код C с помощью GCC. В Windows вы либо должны скомпилировать файлы C с помощью DMC и ссылку с DMD. Или вы можете скомпилировать C-код в DLL, используя любой способный для этого компилятор, а затем для связи с DMD вам нужно сделать DMD-совместимый импортный lib из DLL. Это можно сделать с помощью инструмента implib, найденного в бесплатном пакете основных утилит, который доступен на DigitalMars.
Есть также много этих переводов заголовков уже сделано. Полезно сначала просмотреть проект Bindings в Dsource или спросить в группах новостей digitalmars D прежде, чем приступить к чему-то большому, как перевод GTK-заголовков. Многие популярные библиотеки, такие как GTK, уже завернуты (например, здесь: GTKD)