私のエンジンの機能をC++からC#に移そうとしています。 私は管理対象外のC++を使用してdllとしてエンジンをコンパイルし、C#ラッパーでextern "C"関数のみを使用します。C++からC#への3Dベクトル構造
私は、Vector3df
を受け取り返すさまざまな機能を持っています。これは
typedef Vector3d<f32> Vector3df;
とf32
実際float
であると定義されます。クラス自体には、x yとzと呼ばれるメンバーと、多くのメソッドがあります。
私はC#でクラス全体を書き直すことができますが、これは問題ではありませんが、2と一致する可能性があります。
のは、以下の機能、たとえばみましょう。とにかく
[DllImport("Engine.dll", EntryPoint = "SetColor", CallingConvention = CallingConvention.Cdecl)]
static extern void SetColor(Vector3df color);
[DllImport("Engine.dll", EntryPoint = "GetColor", CallingConvention = CallingConvention.Cdecl)]
static extern Vector3df GetColor();
が存在する私は、この作品のようなコードを作ることができる:
extern "C" void SetColor(Vector3df color)
extern "C" Vector3df GetColor()
は、私はC#で、このようなものを持っていると思います?
私は決してC#の達人ではないことに注意してください。マーシャリングに関しては失われています。私は主にQtやwxWidgetsを習得することなくゲームのための地図エディタを作るためにこれをやっています。
ありがとうございました!
私はそのようなことを書くことができますが、クラスを使用し、いくつかのメソッドを含めることができますか?私はC#でベクトル関数を書き直しても問題ありません。 – Sanctus2099
クラスを使用することができ、メソッドを追加できます。ネイティブクラスが期待しているものとは異なるバイナリ表現を与えるフィールドを追加しないでください。 –