c# - C++からC#への複雑な構造体のマーシャリング

原文 c# c++ struct pinvoke

数日間、私はC++からC#への複雑な構造体をマーシャリングしようとしていますが、基本的には達成しようとしていることのほとんどを成し遂げることができましたが、今や、リストだと信じるものをマーシャリングしようとして立ち往生しています。

例では、私が何をしているか、どこに行き詰まっているかを含めます。

public: void __thiscall TransactionModule_t::GetTransaction(class Identity_t const &)const 


次のように適合:

// public: void __thiscall TransactionModule_t::GetTransaction(class Identity_t const &)const     
[DllImport("Transaction.dll", EntryPoint = "[email protected][email protected]@[email protected]@@Z", CallingConvention = CallingConvention.ThisCall)]
public static extern void GetTransaction(IntPtr iPtr,[Out, MarshalAs(UnmanagedType.LPStruct)] Identity transaction);


[StructLayout(LayoutKind.Sequential)]
[Serializable]
public class Identity
{
    public uint Id;
    public uint Type;

    public Identity(uint id = 0, uint type = 0)
    {
        this.Id = id;
        this.Type = type;
    }
}


これは問題なく機能しています。

しかし、私は私にリストを与えるメソッドを呼び出したいです。

public: void __thiscall TransactionModule_t::GetTransactions(class std::vector<class Identity_t,class std::allocator<class Identity_t> > &)const 


そして、私が行き詰まっているところ:

// public: void __thiscall TransactionModule_t::GetTransactions(class std::vector<class Identity_t,class std::allocator<class Identity_t> > &)const 
[DllImport("Transaction.dll", EntryPoint = "long mangled entry point", CallingConvention = CallingConvention.ThisCall)]
public static extern void GetTransactions(IntPtr iPtr,[Out] Transactions transactions);


両者の間に収まるクラスを作ってみました。

[StructLayout(LayoutKind.Sequential)]
[Serializable]
public class Transactions
{
    public Identity Identity;
    public Identity[] List;
}


このメソッドを呼び出すことも可能ですか、ここで何か不足していますか?
答え
このメソッドを呼び出すことも可能ですか?


いいえそうではありません。 C#コードからstd::vectorを指定することはできません。

実際には、C++ / CLIラッパーが必要になります。
関連記事

c# - C#:テキストファイルへの変数の挿入

c# - エンティティフレームワークで作成されたデータベースからヘルパーのドロップダウンリストにアイテムをロードする

c# - Web APIのリクエストに一致する複数のアクションが見つかりました

c# - 日付ピッカーのドロップダウンリストから日付を無効にする

c# - TFSがビルドのgit reposを複製しているときのAppDomainUnloadedException

c# - SQL例外をスローするASP.Netフォーム

c# - 負の角度でも正の値を返すPIDコントローラー

c# - ルールアセンブリを読み込めません

c# - 画像ボタンに画像を読み込む

c# - LINQ-インクルード、カスタム関数を使用してカスタムタイプを返そうとしています。インクルードが機能しない