VC中DLL的原型为:
int STDMETHODCALLTYPE ICC_Reader_Application (int ReaderHandle, int ICC_Connector_No, int Length_of_Command_APDU, char *Command_APDU, char *Response_APDU);
我的调用如下:
Public Declare Function ICC_Reader_Application Lib "ICCDevInter.dll" (ByVal ReaderHandle As Long, ByVal ICC_Connector_No As Long, ByVal Length_of_Command_APDU As Long, ByRef Command_APDU() As Byte, ByRef Response_APDU() As Byte) As Long
再执行中总是报:0X0FC0028B指令引用的“0X0000006D”内存,该内存不能为“READ”
请各位帮帮忙

解决方案 »

  1.   

    Public Declare Function ICC_Reader_Application Lib "ICCDevInter.dll" (ByVal ReaderHandle As Long, ByVal ICC_Connector_No As Long, ByVal Length_of_Command_APDU As Long, ByRef Command_APDU As Byte, ByRef Response_APDU As Byte) As LongVB的byref byte()不是“* unsigned char”,而是“**SafeArray<byte>”
      

  2.   

    调用时引用数组的第一个成员就行了
    byref是传送元素的地址,正好是“* unsigned char”ICC_Reader_Application a, b, c, d(0), e(0)