[英]Writing a D (D2) binding for existing C libraries
我真的很想進入D,但缺乏良好的圖書館支持真的會阻礙我。 因此,我想為我想要使用的現有C庫創建一些D綁定。 我從未做過任何約束,但看起來也不太難。
我打算為D2做這個(不是特別是D1,但是如果它可以用於兩者,甚至更好)。 我正在使用DMD2編譯器。
如果某人有一個非常簡短的例子來說明如何完成一個綁定,我會非常滿意。 目前我可以使用DMC編譯C代碼,鏈接目標文件並從D中的C代碼運行函數。但是,大多數C庫只需要包含頭文件並且需要在C中鏈接。我不確定如何制作適用於那個的綁定......
謝謝!
有幾點需要注意:
DMD及其鏈接器Optlink使用較舊的OMF目標文件格式,而不是COFF。 這意味着您鏈接的C文件也需要是OMF。 如果您不想使用DMC,有些工具可以將COFF轉換為OMF,但我不知道它們的詳細信息。
至於將.h文件轉換為.d文件,一個名為htod的實用程序與DMD一起打包,並將為您執行此轉換,盡管如果您嚴重濫用預處理器有些不完美。 通常,對於清單常量使用const
, immutable
或enum
,對條件編譯使用version
語句,對宏函數使用常規(可能是模板化的)函數。
就示例而言,要查看的一個地方是druntime, 其中包含整個C標准庫的綁定。
你可以看看Aldacron與如何做Derelict2 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.