首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

API调用解决思路

2012-03-04 
API调用C# code//API 原型intGetPeopleName(char *strTmp, int *strLen)//PB10.5中 我声明和调用的情况pub

API调用

C# code
//API 原型int  GetPeopleName(char *strTmp, int *strLen)    //PB10.5中 我声明和调用的情况public function    integer  GetPeopleName(ref string strTmp,ref integer strLen)    library "termb.dll"    ls_name =''li_name = 30    GetPeopleName(ls_name,li_name)sle_name.text = ls_name//下面是C#里调用情况,测试通过[DllImport("termb.dll", EntryPoint = "GetPeopleName", CharSet = CharSet.Ansi, SetLastError = false)] public static extern unsafe int GetPeopleName(ref byte strTmp, ref int strLen);// 声明 byte[] name = new byte[30]; int length = 30; GetPeopleName(ref name[0], ref length);lblName.Text = System.Text.Encoding.GetEncoding("GB2312").GetString(name);//现在 我在PB里调用出现的情况是,sle_name.text 出现的是乱码,我不知道声明的数据类型对不对,还请各位指点


[解决办法]
如果用PB10以上含PB10,申明外部函数时需要再申明后加上;ansi
[解决办法]
怎么加的?肯定要加的!
探讨
加上去,连PB程序都会挂掉...晕倒

[解决办法]
试一下:
ls_name = space(30)
li_name = 30
GetPeopleName(ls_name,li_name)
sle_name.text = ls_name

或者:
char lc_name[]
li_name = 30
GetPeopleName(ls_name,li_name)
sle_name.text = ls_name

热点排行