当前位置:编程学习 > C#/ASP.NET >>

C 中的 char* 在C#中怎么调用

例如,有个c的DLL,有个函数如下,

函数名称
int Init(char *AMMNO, char *state,char* Version, char* SessionID ,char *R1, char* message1);
参数说明
入参
AMMNO:ESAM序列号;8字节
State:状态;1字节;00—0状态,01—1状态
Version:版本;1字节,固定“01”
SessionID:会话ID;1字节;00‐‐新建,01‐‐恢复
R1:随机数1;16字节

出参
message1:N字节(大于1K,小于2K)

返回值
0:正常
1001:序列号错误
1002:状态标识错误
1003:版本错误
1004:会话ID错误
1005:随机数错误


C# 中怎么调用

这样调用不成功,值传的不对,提示序列号错误
 [DllImport("MYDll.dll")]
 public static extern int Init(byte[] AMMNO, int state, int Version, int SessionID, byte[] R1, ref byte[]message1);

第一个值AMMNO要传递的是“0000E10800000060”

用第二种方法 也不行,
 public static extern int Init(string AMMNO, string state, string Version, string SessionID, string  R1, ref string message1);

请问在C#中要怎么调用C中的函数 --------------------编程问答-------------------- 传指针过去。。。 --------------------编程问答-------------------- try

StringBuilder  --------------------编程问答-------------------- Marshal.AllocHGlobal
Marshal.Copy
方法就应该够了。 --------------------编程问答-------------------- 用string报什么错 --------------------编程问答-------------------- --------------------编程问答-------------------- 一般而言就是byte[]和string,如果不对要自己仔细检查每一个要转换的地方到底是要用byte[]还是string,或者是自己代码有问题!!! --------------------编程问答-------------------- string --------------------编程问答--------------------
引用 4 楼 Chinajiyong 的回复:
用string报什么错


用string 如果字符串的长度是16(8字节), 程序直接退出了
如果字符串的长度是8(8字节),返回序列号不对,传的值不正确才会提示序列号不对 --------------------编程问答-------------------- 8个字节内容是这个,0000E10800000060

转为string 是什么样的
--------------------编程问答-------------------- 这是16进制的。转成字符串是16位。
你是怎么转的? --------------------编程问答-------------------- 我转为字符串为 string s = "0000E10800000060"

这样不行。 --------------------编程问答-------------------- 这样肯定不行。超长了。其实这是把字节的。
{ 0x00,0x00,0xE1,0x08,0x00,0x00,0x00,0x60 }
这样的字节数组 --------------------编程问答-------------------- String sAs = Encoding.ASCII.GetString({ 0x00,0x00,0xE1,0x08,0x00,0x00,0x00,0x60 });
这样的是八位。 --------------------编程问答-------------------- ref byte --------------------编程问答-------------------- 用StringBuilder 可以了, 

--------------------编程问答-------------------- 问百度吧,亲 --------------------编程问答-------------------- 我刚问百度了, http://bbs.csdn.net/topics/330082022 --------------------编程问答-------------------- http://bbs.csdn.net/topics/330082022 --------------------编程问答-------------------- 用StringBuilder 吧 变长的. --------------------编程问答-------------------- ref long --------------------编程问答-------------------- 8字节的用 ref long
1字节的用 ref char
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,