トップページ > 記事閲覧
DxLib + C# における 64bit 動作
名前:ArtLehock 日時: 2025/09/10 01:08

こんちちは、素晴らしいライブラリをありがとうございます。 私は DxLib C# I/F を利用させていただいております。 DxLib の 3Dアクション基本 サンプルプログラム を C# で書き直しております。 DxDLL.cs 内の MV1CollCheck_Sphere 関数には dx_MV1CollCheck_Sphere_x86 dx_MV1CollCheck_Sphere_x64 と x86 と x64 がありますが 64bit 動作も可能なのでしょうか? 質問の背景は、戻り値の型 MV1_COLL_RESULT_POLY_DIM の Dim が uint 型であり C++ のポインタを代入しているとすると 32bit 動作しかできなく思えます。 あと DxLibDotNet 3.24f に不具合がありましたのでご連絡します。 ...dxlib.xsrv.jp/program/dxprogram_3DAction.html こちらのサンプルプログラムを C# に書き直して実行するとステージモデルが表示できません。 次のような感じでコードを書くと MV1_COLL_RESULT_POLY_DIM hitDim: MV1_COLL_RESULT_POLY poly; hitDim = MV1CollCheck_Sphere(modelHandle, -1, pos, Const.PLAYER_ENUM_DEFAULT_SIZE + VSize(moveVector)); for (int i = 0; i < hitDim.HitNum; i++) { poly = MV1CollCheck_GetResultPoly(hitDim, i); として取得した最初の poly.Normal が (-2250, 0, 1) となっていました。 Position2.z が Normal.x にズレており他のメンバーの多くも 4byte ズレていました。 (私は DxLibDotNet.dll を使用していますが)DxDLL.cs を調べると 1010行目の public struct MV1_COLL_RESULT_POLY のメンバーに [FieldOffset(20)] public int MeshIndex; が漏れていました。そのため以降のメンバーが 4byte ズレていました。 この点を修正した DxDLL.cs を使用してビルドすると無事ステージモデルを表示できました。 次回バージョンアップ時に修正をお願い致します。
メンテ

Page: 1 |

Re: DxLib + C# における 64bit 動作 ( No.1 )
名前:管理人 日時:2025/09/10 03:08

> と x86 と x64 がありますが 64bit 動作も可能なのでしょうか? すみません、DxDLL.cs は変換ソフトを使用して作成しているのですが、 MV1_COLL_RESULT_POLY_DIM については正常に変換できていないようです ご指摘の通り 64bit環境では正常に動作しないと思います m(_ _;m > 1010行目の public struct MV1_COLL_RESULT_POLY のメンバーに > [FieldOffset(20)] public int MeshIndex; ご指摘ありがとうございます 今週末辺りに修正します m(_ _;m
メンテ

Page: 1 |

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

   クッキー保存