'DWORD MWRF_EmitATTCard(
' BOOL bIsBig5, //系统繁简体
' DWORD nCardID, // 用户卡号(流水号),取值为0 ~ 300000 建议与消费系统取值定义为一样
' char *strPersonID, //用户编号(建议统一全部为0~9数字,但支持前两位为字母) 建议与消费系统取值定义为一样
' DWORD nGrade, // 级别,可与消费系统定义为一样
' DWORD nAttGroup, // 组别,0 ~ 255,对应256个分组号,
' char *strUserKey, //个人密码,如系统不使用,建议取值"0000"
' char *strName, //姓名
' DWORD nYear, //卡使用有效年,如系统不使用,建议取值2020
' DWORD nMonth, //卡使用有效月,如系统不使用,建议取值12
' DWORD nDay, //卡使用有效日,如系统不使用,建议取值30
' DWORD *TagSN // IC卡原始序列号
');
Public Declare Function MWRF_EmitATTCard Lib "gscmd.dll" (ByVal bIsBig5 As Boolean, ByVal nCardID As Long, ByVal strPersonID As String, _
ByVal nGrade As Long, ByVal nAttGroup As Long, ByVal strUserKey As String, ByVal strname As String, ByVal nYear As Long, _
ByVal nMonth As Long, ByVal nDay As Long, ByRef TagSN As Long) As Long
' BOOL bIsBig5, //系统繁简体
' DWORD nCardID, // 用户卡号(流水号),取值为0 ~ 300000 建议与消费系统取值定义为一样
' char *strPersonID, //用户编号(建议统一全部为0~9数字,但支持前两位为字母) 建议与消费系统取值定义为一样
' DWORD nGrade, // 级别,可与消费系统定义为一样
' DWORD nAttGroup, // 组别,0 ~ 255,对应256个分组号,
' char *strUserKey, //个人密码,如系统不使用,建议取值"0000"
' char *strName, //姓名
' DWORD nYear, //卡使用有效年,如系统不使用,建议取值2020
' DWORD nMonth, //卡使用有效月,如系统不使用,建议取值12
' DWORD nDay, //卡使用有效日,如系统不使用,建议取值30
' DWORD *TagSN // IC卡原始序列号
');
Public Declare Function MWRF_EmitATTCard Lib "gscmd.dll" (ByVal bIsBig5 As Boolean, ByVal nCardID As Long, ByVal strPersonID As String, _
ByVal nGrade As Long, ByVal nAttGroup As Long, ByVal strUserKey As String, ByVal strname As String, ByVal nYear As Long, _
ByVal nMonth As Long, ByVal nDay As Long, ByRef TagSN As Long) As Long
对于字符串比较特殊一点
你的例子太长了,懒得写咱们举一个简单的
比如C里面的函数定义为 long test(char *strIn){……}
VB里面声明他Public DeclareFunction test Lib "gscmd.dll " (ByVal strIn as long) as long调用的时候
dim strIn as string
dim strTmp() as byte
dim point as long
strin ="abcd"
strtmp = strconv(strin & Chr(0),vbfromunicode) '把字符串转换成字节数组,并且加上C语言中字符串的结束符
point = varptr(strtmp(0)) '获取字节数足首元素的地址,这就是指针了
test(point)
' BOOL bIsBig5, //系统繁简体
' DWORD nCardID, // 用户卡号(流水号),取值为0 ~ 300000 建议与消费系统取值定义为一样
' char *strPersonID, //用户编号(建议统一全部为0~9数字,但支持前两位为字母) 建议与消费系统取值定义为一样
' DWORD nGrade, // 级别,可与消费系统定义为一样
' DWORD nAttGroup, // 组别,0 ~ 255,对应256个分组号,
' char *strUserKey, //个人密码,如系统不使用,建议取值 "0000 "
' char *strName, //姓名
' DWORD nYear, //卡使用有效年,如系统不使用,建议取值2020
' DWORD nMonth, //卡使用有效月,如系统不使用,建议取值12
' DWORD nDay, //卡使用有效日,如系统不使用,建议取值30
' DWORD *TagSN // IC卡原始序列号
');
Public Declare Function MWRF_EmitATTCard Lib "gscmd.dll"(ByVal bIsBig5 As Long, ByVal nCardID As Long, ByVal strPersonID As String, _
ByVal nGrade As Long, ByVal nAttGroup As Long, ByVal strUserKey As String, ByVal nMonth As Long, ByVal nDay As Long, ByRef TagSN As Long)As Long注意 Boolean, VB 中它占用 1 字节,-1 是 True, 0 是 False。在 C++ 中, BOOL 是 int 型, 1 是 TRUE.
http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx转换结果不是很完美,不过可以参考.
Declare Function Net_GetNetwork Lib "Reader2600DLL.dll" ( _
ByVal m_hScanner As Long, _
ByRef ip_address As Byte, _
ByRef Port As Long, _
ByRef mask As Byte, _
ByRef Geteway As Byte _
) As apiReturn