私はC++構造体を持っています
struct UnmanagedStruct
{
char* s;
// Other members
};
およびC#構造体
struct ManagedStruct {
[MarshalAs(UnmanagedType.LPStr)]
string s;
// Other members
}
C++ライブラリは
extern "C" UnmanagedStruct __declspec(dllexport) foo( char* input );
そしてそれは次のようにインポートされます
[DllImport("SomeDLL.dll", CharSet = CharSet.Ansi)]
static extern ManagedStruct foo( string input );
ただし、この関数を呼び出すと、
MarshalDirectiveExceptionは処理されませんでした
メソッドの型シグネチャはPInvokeと互換性がありません。
つまり、この関数呼び出しは、構造体からchar*sとstringsを削除すると機能します。