C#调用C++动态库

来源:互联网 发布:锐战网络 编辑:程序博客网 时间:2024/06/06 15:48

C++动态库h文件:

 /**
   * @brief  打开设备。
   * @par    说明:
   * 建立设备的通讯并且分配相应的资源,大部分功能接口都需要在此过程后才能进行,在不需要使用设备后,必须使用 ::DCSDT_Close 去关闭设备的通讯和释放资源。
   * @param[in] port 端口号。
   * @n 1~64 - 表示串口模式(编号物理对应),编号1表示第一个串口合法设备,编号2表示第二个串口合法设备,以此类推。
   * @n 1001~1064 - 表示USB模式(编号逻辑对应),编号1001表示第一个USB合法设备,编号1002表示第二个USB合法设备,以此类推。
   * @param[in] baud 波特率,只针对串口模式有效。
   * @return <0表示失败,否则为设备标识符。
   */
  int USER_API DCSDT_Open(int port, int baud);


  /**
   * @brief  关闭设备。
   * @par    说明:
   * 关闭设备的通讯和释放资源。
   * @param[in] handle 设备标识符。
   * @return <0表示失败,==0表示成功。
   */
  int USER_API DCSDT_Close(int handle);


  /**
   * @brief  获取SAM_V编号。
   * @par    说明:
   * 获取SAM_V编号。
   * @param[in] handle 设备标识符。
   * @param[out] number SAM_V编号(十六进制格式字符串,分配不少于33字节)。
   * @return <0表示失败,==0表示成功。
   */
  int USER_API DCSDT_GetSamSerialNumber(int handle, char *number);


  /**
   * @brief  查询ID卡。
   * @par    说明:
   * 查询ID卡。
   * @param[in] handle 设备标识符。
   * @param[out] management_number 卡管理号(十六进制格式字符串,分配不少于9字节)。
   * @param[out] serial_number 卡序列号(十六进制格式字符串,分配不少于17字节)。
   * @return <0表示失败,==0表示成功。
   */
  int USER_API DCSDT_SearchIdCard(int handle, char *management_number, char *serial_number);


  /**
   * @brief  获取卡类型。
   * @par    说明:
   * 获取卡类型。
   * @param[in] handle 设备标识符。
   * @return <0表示失败,==0表示中国人居民身份证,==1外国人永久居留证。
   */
  int USER_API DCSDT_GetIdCardType(int handle);


  /**
   * @brief  读ID卡。
   * @par    说明:
   * 读ID卡。
   * @param[in] handle 设备标识符。
   * @param[in] flags 标记(参考1,可以多选)。
   * @return <0表示失败,==0表示成功。
   */
  int USER_API DCSDT_IdCardRead(int handle, int flags);


  /**
   * @brief  获取ID卡相关内容(中国人居民身份证)。
   * @par    说明:
   * 获取ID卡相关内容(中国人居民身份证)。
   * @param[in] handle 设备标识符。
   * @param[in] flag 标记(参考2,只能单选)。
   * @param[out] content 根据flag获取内容(内容格式和分配与flag相关)。
   * @return <0表示失败,==0表示成功。
   */
  int USER_API DCSDT_IdCardContent(int handle, int flag, char *content);


  /**
   * @brief  获取ID卡相关内容(外国人永久居留证)。
   * @par    说明:
   * 获取ID卡相关内容(外国人永久居留证)。
   * @param[in] handle 设备标识符。
   * @param[in] flag 标记(参考3,只能单选)。
   * @param[out] content 根据flag获取内容(内容格式和分配与flag相关)。
   * @return <0表示失败,==0表示成功。
   */
  int USER_API DCSDT_IdCardContentForForeigner(int handle, int flag, char *content);


  /**
   * @brief  转换photo信息到bmp文件。
   * @par    说明:
   * 转换photo信息到bmp文件。
   * @param[in] photo 相片信息(十六进制格式字符串)。
   * @param[in] file_name bmp文件路径。
   * @return <0表示失败,==0表示成功。
   */
  int USER_API DCSDT_PhotoToBmpFile(const char *photo, const char *file_name);


  /**
   * @brief  转换photo信息到jpg文件。
   * @par    说明:
   * 转换photo信息到jpg文件。
   * @param[in] photo 相片信息(十六进制格式字符串)。
   * @param[in] file_name jpg文件路径。
   * @return <0表示失败,==0表示成功。
   */
  int USER_API DCSDT_PhotoToJpgFile(const char *photo, const char *file_name);


  /**
   * @brief  转换photo信息到bmp格式的base64。
   * @par    说明:
   * 转换photo信息到bmp格式的base64。
   * @param[in] photo 相片信息(十六进制格式字符串)。
   * @param[out] base64_str bmp格式的base64(建议分配1m字节)。
   * @return <0表示失败,==0表示成功。
   */
  int USER_API DCSDT_PhotoToBmpBase64(const char *photo, char *base64_str);


  /**
   * @brief  转换photo信息到jpg格式的base64。
   * @par    说明:
   * 转换photo信息到jpg格式的base64。
   * @param[in] photo 相片信息(十六进制格式字符串)。
   * @param[out] base64_str jpg格式的base64(建议分配64k字节)。
   * @return <0表示失败,==0表示成功。
   */
  int USER_API DCSDT_PhotoToJpgBase64(const char *photo, char *base64_str);


  /**
   * @brief  解析其它信息。
   * @par    说明:
   * 解析其它信息。
   * @param[in] flag 标志,0表示性别,1表示民族,2表示国籍。
   * @param[in] in_info 传入信息。
   * @param[out] out_info 返回的信息。
   * @return <0表示失败,==0表示成功。
   */
  int USER_API DCSDT_ParseOtherInfo(int flag, const unsigned char *in_info, unsigned char *out_info);




C#调用代码:

/**
        * @brief  打开设备。
        * @par    说明:
        * 建立设备的通讯并且分配相应的资源,大部分功能接口都需要在此过程后才能进行,在不需要使用设备后,必须使用 ::DCSDT_Close 去关闭设备的通讯和释放资源。
        * @param[in] port 端口号。
        * @n 1~64 - 表示串口模式(编号物理对应),编号1表示第一个串口合法设备,编号2表示第二个串口合法设备,以此类推。
        * @n 1001~1064 - 表示USB模式(编号逻辑对应),编号1001表示第一个USB合法设备,编号1002表示第二个USB合法设备,以此类推。
        * @param[in] baud 波特率,只针对串口模式有效。
        * @return <0表示失败,否则为设备标识符。
        */
        [DllImport("dcsdtapi.dll", EntryPoint="DCSDT_Open",CharSet=CharSet.Ansi)]
        private static extern int DCSDT_Open(int port, int baud);


        /**
         * @brief  关闭设备。
         * @par    说明:
         * 关闭设备的通讯和释放资源。
         * @param[in] handle 设备标识符。
         * @return <0表示失败,==0表示成功。
         */
        [DllImport("dcsdtapi.dll")]
        private static extern int DCSDT_Close(int handle);


        /**
           * @brief  获取SAM_V编号。
           * @par    说明:
           * 获取SAM_V编号。
           * @param[in] handle 设备标识符。
           * @param[out] number SAM_V编号(十六进制格式字符串,分配不少于33字节)。
           * @return <0表示失败,==0表示成功。
           */
        [DllImport("dcsdtapi.dll")]
        private static extern int DCSDT_GetSamSerialNumber(int handle, [Out] byte[] number);


          /**
           * @brief  查询ID卡。
           * @par    说明:
           * 查询ID卡。
           * @param[in] handle 设备标识符。
           * @param[out] management_number 卡管理号(十六进制格式字符串,分配不少于9字节)。
           * @param[out] serial_number 卡序列号(十六进制格式字符串,分配不少于17字节)。
           * @return <0表示失败,==0表示成功。
           */
        [DllImport("dcsdtapi.dll")]
        private static extern int DCSDT_SearchIdCard(int handle, [Out] byte[] management_number, [Out] byte[] serial_number);


          /**
           * @brief  获取卡类型。
           * @par    说明:
           * 获取卡类型。
           * @param[in] handle 设备标识符。
           * @return <0表示失败,==0表示中国人居民身份证,==1外国人永久居留证。
           */
        [DllImport("dcsdtapi.dll")]
        private static extern int DCSDT_GetIdCardType(int handle);


          /**
           * @brief  读ID卡。
           * @par    说明:
           * 读ID卡。
           * @param[in] handle 设备标识符。
           * @param[in] flags 标记(参考1,可以多选)。
           * @return <0表示失败,==0表示成功。
           */
        [DllImport("dcsdtapi.dll")]
        private static extern int DCSDT_IdCardRead(int handle, int flags);


          /**
           * @brief  获取ID卡相关内容(中国人居民身份证)。
           * @par    说明:
           * 获取ID卡相关内容(中国人居民身份证)。
           * @param[in] handle 设备标识符。
           * @param[in] flag 标记(参考2,只能单选)。
           * @param[out] content 根据flag获取内容(内容格式和分配与flag相关)。
           * @return <0表示失败,==0表示成功。
           */
        [DllImport("dcsdtapi.dll")]
        private static extern int DCSDT_IdCardContent(int handle, int flag, [Out] byte[] content);


      /**
       * @brief  转换photo信息到jpg格式的base64。
       * @par    说明:
       * 转换photo信息到jpg格式的base64。
       * @param[in] photo 相片信息(十六进制格式字符串)。
       * @param[out] base64_str jpg格式的base64(建议分配64k字节)。
       * @return <0表示失败,==0表示成功。
       */
        [DllImport("dcsdtapi.dll")]
        private static extern int DCSDT_PhotoToJpgBase64(byte[] photo, [MarshalAs(UnmanagedType.LPStr)] StringBuilder sdata);

原创粉丝点击