110,533
社区成员
发帖
与我相关
我的任务
分享
Marshal.FreeHGlobal(ptr)
这个~
extern "C" __declspec(dllexport) TestStrct* TestFunc(char* a)
{
TestStrct* strct= (TestStrct*)malloc(sizeof(TestStrct));
strcpy(strct->a, a);
return strct;
}
2.C#这边改成酱:
IntPtr ptr = TestFunc("abcd“);
TestStrct strct= (TestStrct )Marshal.PtrToStructure(ptr, typeof(TestStrct ));
试一下,我没试过,但感觉这样就没问题了[StructLayoutAttribute(LayoutKind.Sequential)]
public struct TestStrct
{
//定义错误
//用
//public StringBuilder a = new StringBuilder(20);
//或
//public char[] a = new char[20];
[MarshalAsAttribute(UnmanagedType.LPWStr, SizeConst = 20)]
public string a;
}