d3d11.h
を d3d11.d
に変換したいのでやる。
以前、少し手を出したときの記事。
この時は手作業で d3d11.h
をD言語向けに編集していたのだけど、
プログラムで自動変換します。
環境整備
Windows10(64bit)
- llvmインストール(32bit)
- python36-32
pip install clang
TranslationUnit
- typedef
- enum
- struct/union
- function
プリプロセッサー情報を得る
- include
- define
ComのIIDを得る
- unexposed
D向けに出力
- extern
Windows
- public import
&
を*
に置換- interfaceに対するポインタの
*
をひとつ減らす
あとは愚直に粛々と前に進める
python clang は強力
こいつがあると、C/C++のヘッダから各言語向けのバインディングを作成するなどの作業を半自動化できて便利。 例えば、
GitHub - ousttrue/UnityCairo: DllImport for cairo
DllImport for cairo. Contribute to ousttrue/UnityCairo development by creating an account on GitHub.
https://github.com/ousttrue/UnityCairo
元々、
BulletSharp
BulletSharp : .NET wrapper for the Bullet physics library
http://andrestraks.github.io/BulletSharp/
が clang で bullet のヘッダーを変換しているぽかったので、そこから調べた。
できたもの
なんとなく動くものができた。
GitHub - ousttrue/pycpptool: tool for cpp source manipulation 🐲
tool for cpp source manipulation 🐲. Contribute to ousttrue/pycpptool development by creating an account on GitHub.
https://github.com/ousttrue/pycpptool