VC函数是:extern "C" int __declspec(dllexport)PassPortRead(char *InPutData,char OuPutData[255]);
VB声明是:Private Declare Function PassPortRead Lib "PPRead.dll" (ByVal InPutData As String, ByVal OutPutData As String) As Integer
生成的文件能正常运行,并且能生成相应数据,但是在调试时提示"DLL调用约定错误"
E_Mail:linnda413@126.com
VC代码:
int PassPortRead(char *InPutData,char OutPutData[255])
{
char tmp[255];
int len = 0;
memset(tmp,0,255);
//初如化成员变量passInfo
memset(PassInfo.Name,0,20);
memset(PassInfo.Birth,0,20);
memset(PassInfo.Gender,0,10);
memset(PassInfo.Nationality,0,10);
memset(PassInfo.Number,0,20);
memset(PassInfo.IdCode,0,20);
memset(PassInfo.Expiry,0,20);
memset(PassInfo.CIssue,0,20);
//删除换行与回车字符
DelInStr(InPutData,"\r");
DelInStr(InPutData,"\n");
len = strlen(InPutData);
if (len == 0)
{
return -1;
}
if (len < 80)
{
PassportParseTD2(InPutData);
}else{
PassportParseTD1(InPutData);
}
sprintf(tmp,"#01%s#02%s#03%s#04%s#05%s#06%s#07%s#08%s",
PassInfo.Name,PassInfo.Birth,PassInfo.Gender,PassInfo.Nationality,PassInfo.Number,
PassInfo.IdCode,PassInfo.Expiry,PassInfo.CIssue);
strcat(OutPutData,tmp);
return 0;
}
VB代码:
Private Declare Function PassPortRead Lib "PPRead.dll" (ByVal InPutData As String, ByVal OutPutData As String) As Integer
Private Sub START_BTN_Click()
Dim PPData As String
Dim PPShow As String
PPData = PPData_TXT.Text
PPShow = String(255, vbNullChar)
If PPData = "" Then
PRSHOW_TXT.Text = "护照数据不能为空..."
End If
Call PassPortRead(PPData, PPShow)
PRSHOW_TXT.Text = PPShow
End Sub
生成程序运行正常:
调试时出现错误
自己整了4个目标用于扫描。以后可能可以自己添加删除(写到这儿忽然觉得C++的vector不能删除元素(反正C++ Primer里目前没找到)让人很郁闷)
Form1,须加一个Timer1
Dim CAngle As Integer 'Current Angle (Not Class Angle)
Private Sub Form_Load() '初始化
CAngle = 0
Me.BackColor = vbBlack
......