<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="C#调用C/C++DLL传递给系统调用的数据区域太小。(异常来自 HRESULT:0x8007007" id="card1">
<p> 游客</p><p>
标题:C#调用C/C++DLL传递给系统调用的数据区域太小。(异常来自 HRESULT:0x8007007<br/>
正文:<br/>
C#调用 C DLL文件是报这个错： 汉字：  传递给系统调用的数据区域太小。 (异常来自 HRESULT:0x8007007A) 其他类型（数字、字母）的不报错，一切正常！ 就是汉字报此错！！ 找到问题了； 问题在于：结构声明 调用 DLL 时，声明结构一定要注意，如果参数中有&quot;字符串&amp;rdquo;传进来，或输出的话； 一定要使用 Unicode 而不能采用 Ansi 正确 ： [StructLayout(LayoutKind.Sequential,  CharSet = CharSet.Unicode)] 修正后代码例子：[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 1)]     //[StructLayout(LayoutKind.Sequential)]     public struct CAM_GROUP_INFO     {         public int nCamGroupID; //camera group id         [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]         public char[] szGroupName;  //camera group name         public int nServerID; //belong to which server         public int state; //MP_CAM_StateXXXX     }; 如果我用CharSet = CharSet.Unicode在c#中像上面这样申明结构体，则释<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=431&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=431&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=431&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=431&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=431">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=431">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>