2012-08-15 51 views
0

我想知道如何將字符串類型編組爲BSTR *類型。 只是闡述,C++的結構如下:如何定義和編組BSTR *類型

struct MyStruct 
{ 
    BSTR* string; 
    int a; 
} 

我需要定義在C#中端建立一個新sturct,我想這兩個字符串[]和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.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); 

回答

1

試試這個:

[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)] 
struct MyStruct 
{ 
    [MarshalAs(UnmanagedType.BStr)] public String myString; 
    public int a; 
} 
+0

感謝您的答覆,有什麼不同,我應該做的,而分配新值的字符串? Marshal.stringToPtr等等..? – 2012-08-15 06:30:55

+0

沒有特別要求。 – logicnp 2012-08-15 06:32:52

+0

從c#轉發到C++端的整個結構已損壞,沒有有意義的值,我將編輯我的原始帖子以顯示案例 – 2012-08-15 06:35:25