@dasannikov

Возможно ли встраивать модули на D в XCode и iOS приложения?

Возможно ли встраивать модули на D в XCode и iOS приложения (Либо компилировать, либо на уровне .so/.obj файлов). Если да, подскажите какой пайплайн.
  • Вопрос задан
  • 2791 просмотр
Решения вопроса 1
Monnoroch
@Monnoroch
Теоретически, D компилится в обьектные файлы, которые, в том числе, могут экспортировать символы с extern "C", то есть те, что можно вызывать из C (Obj-C). Остается только линковать Obj-C обьектники и D обьектники линковщиком, который умеет и те и другие: для этого, например, подойдет gcc (я сам линковал c++ и D обьектники вместе). Насколько я помню, в xcode используется clang, но вполне возможно, что он тоже сможет, проверяйте.
Вам лишь нужно отдельно с помощью, например, digital mars компилера, скомпилить .d файлы, сгенерировать для extern "C" функций .h файлы, чтобы инклудить их в Obj-C, и добавить в линкуемые те обьектники, что сгенерил D компилятор.
С C++ (gcc 4.7, linux) это точно возможно, на винде у меня не вышло.
Единственное, если main у вас не на D, то может возникнуть проблема с Druntime, которая должна быть инициализирована для корректной работы сборщика мусора.
Интересный факт: если не использовать GC-память, то даже инициализация рантайма не нужна (не знаю, как в теории, но у меня работало).
Вообще, честно говоря, я бы сказал, что гораздо проще писать программу на D с подключаемыми С или Obj-C (тут придется разбираться с авторелизпулами) модулями в виде статических или динамических библиотек.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы