トップページ > 記事閲覧
VisualC#用のDXライブラリの機械的変換について
名前:めなし 日時: 2019/09/25 02:33

お手数をおかけしますが、質問させてください。 VisualC#用のDXライブラリ(DxLib.dllとDxDLL.cs)を使用しています。 変換ソフトを使用して機械的にC#用のファイルを作成されていると 思いますが、その方法を教えて頂く事はできますでしょうか。 やりたいことは下記になります。 ・DxLib.dllを作成する上で、DxLib.hの関数を頭にdx_が付いた関数名で  ラップするcppやdefファイルのコードを機械的に生成  ※加えてDxLibを使った自作関数やその他ライブラリ(EffekseerForDXLibなど)の   関数もDxLib.dllに含める。 ・DxLib.dllからDxDLL.csのコードを機械的に生成 ※機械的に楽したいなぁという浅ましい考えで申し訳ございません。  前者か後者のみ可能なのかから分かっていない為、できない部分は  使う関数分だけ地道に書いていこうかと思います。
メンテ

Page: 1 |

Re: VisualC#用のDXライブラリの機械的変換について ( No.1 )
名前:管理人 日時:2019/09/25 23:59

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#のコードを出力する ) といったことをしています
メンテ
Re: VisualC#用のDXライブラリの機械的変換について ( No.2 )
名前:めなし 日時:2019/09/26 07:58

早々にご回答頂きありがとう御座います。 説明とMakeDxLibDLLSource.cppをざっくり斜めよみして、 やっている概要は理解できました。 時間あるときに試してみます。
メンテ
Re: VisualC#用のDXライブラリの機械的変換について ( No.3 )
名前:めなし(解決) 日時:2019/09/29 02:02

MakeDxLibDLLSource.cppの改変は敷居が高そうなので必要になるまで置いておいて(爆) 置いてあったcppとdefに必要な関数を手動で追加して、やりたいことが一通り動く事を確認できました。 ありがとう御座いました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存