アンマネージ ネイティブ ライブラリからマネージ C# コードへのコールバックを使用しています。コールバック関数はヘッダー ファイルで宣言されています。
typedef void* (TNotice)(wchar_t *msg, bool error);
コールバックには文字列パラメーター msg があります。わかりません。なぜ c# で宣言が機能しないのですか:
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate IntPtr CallbackDelegate([MarshalAs(UnmanagedType.LPWStr)]string msg, bool error);
しかし宣言:
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate IntPtr CallbackDelegate([MarshalAs(UnmanagedType.LPWStr)]StringBuilder msg, bool error);
正常に動作します。