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