[язык D] Линковка с C-библиотеками?

Barbie29

Товарищи рекламировавшие тут Ди. Скажите оно умеет линковаться с Си библиотеками и наоборот? Могу-ли я заюзать в Си проекте библиотеки на Ди? Больше интересует второе.
и конкретно как это можно сделать?

karkar

Юзать сишные либы так же как в С++ каком-нибудь. Описываешь функции как extern(C добавляешь сишный .lib и готово. Пример из моего проектика:
http://bitbucket.org/infognition/bsort/src/1f10d0863304ea6e...
Один нюанс: при использовании DMD в винде для 32-битного кода либы должны быть в формате OMF, а не COFF. Если другой компилятор или 64 бита или не винда, то этот вопрос не встает, все еще проще.
В обратную сторону - использовать Dивные либы в программе на Си - все сложнее, ибо рантайм, GC, и не на всех платформах одинаковая поддержка. Тут я подробностей не знаю, но судя по обсуждениям, это проблемное место, над которым сейчас как раз активно работают.

apl13

Описываешь функции как extern(C)
Разве не C++?

karkar

Вопрос был про С.
С С++ бинарной совместимости нет ни у D, ни у самого С++.

apl13

А, ну да.
Я посмотрел на твою фразу "Юзать сишные либы так же как в С++ каком-нибудь", и ключевое слово полыхнуло в моем мозгу, сорри.
Оставить комментарий
Имя или ник:
Комментарий: