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

    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 (тут придется разбираться с авторелизпулами) модулями в виде статических или динамических библиотек.
    Ответ написан
    3 комментария