互操作我有此struct
在C++:C C#
struct TEXTMSGSTR
{
HWND Sender;
wchar_t Text[255];
//wchar_t *Text;
};
和在C#:
public struct TEXTMSGSTR
{
public IntPtr Sender;
public ? Text;
}
其中我送爲COPYDATASTRUCT
消息的一部分從非託管到託管代碼。由於C#沒有wchar_t
,因此C#端的struct
的正確構造是什麼?我試過字符串等,但當然錯誤出現!
任何人都可以給我有關如何封送這個的一些想法,以及我是新來這個東西?:
TEXTMSGSTR tx = (TEXTMSGSTR)Marshal.PtrToStructure(cds.lpData, typeof(TEXTMSGSTR));
你會得到什麼樣的錯誤,當你使用字符串? – scottm 2009-05-19 21:21:18
你應該檢查出http://stackoverflow.com/questions/188299/marshal-c-struct-array-into-c 所有的答案都在那裏。 :) – Randolpho 2009-05-19 21:22:03
如果您只使用沒有編組部分的直線字符串,則會導致內存損壞。 – flavour404 2009-05-19 21:57:45