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