问题描述
使用vb2005dll中函数:__int16__stdcallrf_anticoll(HANDLEicdev,unsignedchar_Bcnt,unsignedlong*_Snr);(返回0为正确)vb2005调用:(声明)PublicDeclareFunctionrf_anticollLib"UReaderDrv.dll"(ByValicdevAsInteger,ByVal_BcntAsByte,ByVal_Snr()AsByte)AsInteger(调用)Dimsnr(3)AsByteDimrfAntiAsIntegerrfAnti=rf_anticoll(icdev,0,snr)问题:rfAnti的返回值不为0,但是snr中传递的数据是正确的是否我的调用出现了问题?谢谢指教
解决方案
解决方案二:
看清楚:函數:rf_anticoll中ByVal_BcntAsByte‘字節dll中:unsignedchar_Bcnt’字符串你的調用:rfAnti=rf_anticoll(icdev,0,snr)是整型數據。你連引用函數的數據類型都不一致,錯了很正常!
解决方案三:
如果這個是正確的的話:dll中函数:__int16__stdcallrf_anticoll(HANDLEicdev,unsignedchar_Bcnt,unsignedlong*_Snr);(返回0为正确)聲明應該為:PublicDeclareFunctionrf_anticollLib"UReaderDrv.dll"(ByValicdevAsIntPtr,ByVal_BcntAsstring,ByVal_SnrAslong)AsInteger'icdev應該是窗體的一個句柄
时间: 2024-10-20 06:23:57