互操作我有此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