私のc++アプリケーションには次のような構造があります。
struct Animation
{
UINT To;
UINT From;
USHORT AnimationID;
};
struct Entity
{
USHORT X, Y;
UINT SERIAL;
USHORT SpriteID;
BYTE DIRECTION;
USHORT TYPE;
BOOL Cursed;
BOOL Fased;
BOOL IsPet;
void AddAnimation(Animation &const a)
{
Animations.push_back(a);
}
void ClearAnimations()
{
this->Animations.clear();
}
private:
vector<Animation> Animations;
};
私はこのエクスポートされた関数を持っています:
extern "C" __declspec(dllexport) Entity GetNearest(void)
{
Entity & result = GetNearestEntity();
return result;
}
これを使用してC#でエンティティ値を取得することは可能ですか?
私はこれをやろうとしました:
[DllImport("FatBoy.dll", SetLastError = true)]
internal static extern Entity GetNearest();
public struct Entity
{
ushort X, Y;
uint SERIAL;
ushort SpriteID;
byte DIRECTION;
ushort TYPE;
bool Cursed;
bool Fased;
bool IsPet;
}
私がそれを呼ぶとき、私はエラーを受け取ります:
Method's type signature is not PInvoke compatible.