c写的程序要返回一个char*c#调用的时候应该用什么来接受呢 char*的长度未知
stringbuild? 我返回的长度有20mb左右 为什么我用stringbulid接受只有4个自己长度 感觉就是个指针的长度---------另一个问题的分割线-------------------
另外一种方法是返回一个struct 结构中包括char*和char*的长度两个变量但是c#接收结构的时候 说是类型不匹配 返回错误
未处理MarshalDirectiveException
方法的类型签名与 PInvoke 不兼容-------------------同一个问题另外一种方法的分割线-------------------
另外一种方法我用intptr接受
public struct CDecodeFileInfo
{
public long len;
public string data;
};CDecodeFileInfo cdfi = new CDecodeFileInfo();
IntPtr ptr = CReadFile(@"c:\des");
cdfi = (CDecodeFileInfo)Marshal.PtrToStructure(ptr, typeof(CDecodeFileInfo));
返回的错误是
未处理AccessViolationException
尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
求任意一种解决方法
stringbuild? 我返回的长度有20mb左右 为什么我用stringbulid接受只有4个自己长度 感觉就是个指针的长度---------另一个问题的分割线-------------------
另外一种方法是返回一个struct 结构中包括char*和char*的长度两个变量但是c#接收结构的时候 说是类型不匹配 返回错误
未处理MarshalDirectiveException
方法的类型签名与 PInvoke 不兼容-------------------同一个问题另外一种方法的分割线-------------------
另外一种方法我用intptr接受
public struct CDecodeFileInfo
{
public long len;
public string data;
};CDecodeFileInfo cdfi = new CDecodeFileInfo();
IntPtr ptr = CReadFile(@"c:\des");
cdfi = (CDecodeFileInfo)Marshal.PtrToStructure(ptr, typeof(CDecodeFileInfo));
返回的错误是
未处理AccessViolationException
尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
求任意一种解决方法
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货