文字列型を BSTR* 型にマーシャリングする方法を考えていました。詳しく説明すると、C++ の構造は次のとおりです。
struct MyStruct
{
BSTR* string;
int a;
}
C# 側で新しい sturct を定義する必要があります。string[] と IntPtr[] の両方を試しましたが、成功しませんでした。
ご協力いただきありがとうございます!
編集: C++ 構造:
struct HTTPTEXTRENDERERFILTERINFO {
enum { UTC, GMT } eTimestamp;
BOOL bEnableCCIngest;
LONG lQueueSizeTreshold;
LONG lSendTimeTreshold;
BYTE btBroadcastUrlCount;
BSTR* pbstrBroadcastUrls;
LONG lInputPinsNum;
};
関数のプロトタイプ:
HRESULT HTTPTextRendererFilter::SetConfig(IN const HTTPTEXTRENDERERFILTERINFO& Config)
c# 構造:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct HttpTextRenderFilterInfo { public enum TimestampType : int { UTC, GMT };
public TimestampType Timestamp; public int EnableCCIngest; public int QueueSizeTreshold; public int SendTimeTreshold; public byte BroadcastUrlCount; [MarshalAs(UnmanagedType.BStr)] public string pbstrBroadcastUrls; public int lInputPinsNum; };
プロトタイプ:
[PreserveSig]
int SetConfig([In] ref HttpTextRenderFilterInfo config);