VisualC#用のDXライブラリのパッケージの中に Source というフォルダがあると思いますが、
その中の MakeDxLibDLLSource.cpp というファイルが機械的に変換するソフトのプログラムとなっています
コンソールアプリで、引数に DxLib.h, DxFunctionWin.h, DxDirectX.h の三つのファイルのパスを渡します
( DxFunctionWin.h と DxDirectX.h はダウンロードページからダウンロードできるDXライブラリの
ソースファイルのパッケージの中に入っています )
MakeDxLibDLLSource.exe DxLib.h DxFunctionWin.h DxDirectX.h
↑こんな感じでプログラムを実行すると以下の8個のファイルが生成されます
DxDLL.h, DxDLL.cpp, DxDLL.cs, DxDLL.def, DxDLLx64.def
DxDLLW.h, DxDLLW.cpp, DxDLLW.cs, DxDLLW.def, DxDLLWx64.def
( マルチバイト文字列版の32bitと64bit用のファイルと、Unicode版の32bitと64bit用のファイルです )
MakeDxLibDLLSource.cpp が変換処理のプログラムの全てなのですが、最初適当に作成した後に
追加追加で処理を増やしていったのでもう自分でもよくわからなくなっています
( ちょっとした処理を追加する場合は、まず MakeDxLibDLLSource.cpp のプログラムと1時間ほど
睨めっこして何をどのように処理していたか思い出すところから始まる )
処理としては DxLib.h 内に存在する関数を列挙して、C#では扱えないような型を引数や戻り値にしている
関数を弾いて( ただし DxDLL.h, DxDLL.cpp の方には出力する )残ったものを DxDLL.cs に出力する
( 同じ要領で DxLib.h に掛かれている #define 定義の数値も DxDLL.cs に出力する )
機械変換では無理なインライン関数などは手作業で関数を出力する( fprintf でC#のコードを出力する )
といったことをしています