我真的很想进入D,但缺乏良好的图书馆支持确实阻碍了我。因此,我想为我想要使用的现有C库创建一些D绑定。我从未做过任何约束,但看起来也不太难。
我打算为D2做这个(不是特别是D1,但是如果它可以用于两者,甚至更好)。我正在使用DMD2编译器。
如果某人有一个非常简短的例子来说明如何完成绑定,我会非常满意。目前我可以使用DMC编译C代码,链接目标文件并从D中的C代码运行函数。但是,大多数C库只需要包含头文件并且需要在C中链接。我不确定如何制作对那个有用的绑定......
谢谢!
答案 0 :(得分:4)
有几点需要注意:
DMD及其链接器Optlink使用旧的OMF目标文件格式,而不是COFF。这意味着您链接的C文件也需要是OMF。如果您不想使用DMC,可以使用将COFF转换为OMF的工具,但我不知道有关它们的详细信息。
就将.h文件转换为.d文件而言,一个名为htod的实用程序与DMD一起打包,并将为您执行此转换,尽管如果您严重滥用预处理器有些不完美。通常,对于清单常量使用const
,immutable
或enum
,对条件编译使用version
语句,对宏函数使用常规(可能是模板化的)函数。
就例子而言,一个值得关注的地方是醉酒时间,which contains bindings for the entire C standard library.
答案 1 :(得分:1)
您可以查看Aldacron如何处理Derelict2。