unsigned char对应byte类型,unsigned char*如果是返回字符数组那么对应byte[]。
返回的数据,一般前面加个ref表示返回(int nChannel, ref int pnWidth, ref int pnHeight, ref int pnBitCount);这组参数后面两个就是返回的数据。
char*如果是字符串的话对应string类型,如果是读取加上ref。
你可以试一下,有问题继续留言,这块我做过,可以协助解决。
C#调用C++接口时参数传递
30C#调用C++接口时参数传递问题,比如 c++接口:
1:
long __stdcall SD_GetInputPass(long ReaderHandle, unsigned char ctime, unsigned char* rlen, unsigned char* cpass)
2:
long __stdcall SD_VerifyPin(long ReaderHandle, unsigned char *PIN, short *Sw1Sw2)
3:
int BankTrans(char* InputData, char* OutPutData)
等等类型,在C#中调用时应该如何传递参数?最好能整体说一下原理,拜谢各位大佬。我补充下我调用第一个接口的错误代码,这个代码调用没问题,硬件设备已经执行,只是返回结果时报错,
[DllImport(@"C:\LD_APOSA8\MisPos.dll")]
public static extern long SD_GetInputPass(long ReaderHandle, string ctime, byte[] rlen, byte[] cpass);
long ReaderHandle = long.Parse("03");
string ctime = "01";
byte[] rlen = new byte[10];
byte[] cpass = new byte[20];
SD_GetInputPass(ReaderHandle, ctime, rlen, cpass);
再补充一下,以下两种对照方式我都试过了:
//c++:unsigned char * <==> c#:ref byte
//c++:unsigned char * <==> c#:[MarshalAs(UnmanagedType.LPArray)] byte[]
- 点赞
- 写回答
- 关注问题
- 收藏
- 复制链接分享
- 邀请回答
2条回答
为你推荐
- C#调用C++接口时参数传递
- 求助:使用生成的Golang DLL返回字符串或* C.Char
- c#
- cgo
- net
- 1个回答
- 将参数传递给通过HMVC调用的Kohana 3.3控制器的正确方法是什么?
- kohana
- php
- 1个回答
- 释放intptr内存资源,是不是应该对内存清零?再次用这块内存的时候会返回上一次的数据
- 内存
- struct
- 结构
- 指针
- 2个回答
- Unity C#通过动态链接库调用C++传递中文字符串乱码问题。
- 乱码
- 混编
- c++
- unity
- 2个回答
- c#调用c++dll函数时参数传递的问题?怎样正确传值?
- C#如何通过dll与C++的Event同步?
- dll
- event
- 8个回答