• C#调用C语言dll方法


    • C#调用C语言DLL接口声明
    • 
      /**
       * 注册事件回调函数原型
       * @param errCode 事件对应的错误码
       * @param param   注册时传递的参数
       * typedef void (*DataSyncEventCallback)( unsigned long errCode, void *param );
      */
      public delegate void DataSyncEventCallback(UInt32 errCode, byte[] param);
      
      
      /**
       * 初始化函数,使用其他函数时必须调用
       * COW_DLL_API int DataSyncInit(void); 
       */
      [System.Runtime.InteropServices.DllImport("DataSyncDsk.dll")]
      public static extern int DataSyncInit();
      
      /**
       * 结束函数,用于释放可能用到的资源
       * COW_DLL_API void DataSyncExit(void);
       
       */
      [System.Runtime.InteropServices.DllImport("DataSyncDsk.dll")]
      public static extern void DataSyncExit();
      
      
      /**
       * 注册事件函数
       * @param func  事件回调处理函数
       * @param param 调用回调函数时的参数
       * COW_DLL_API int DataSyncRegisterEventCallBack( 
                              DataSyncEventCode ev, DataSyncEventCallback func );
       */
      [System.Runtime.InteropServices.DllImport("DataSyncDsk.dll")]
      public static extern Int32 DataSyncRegisterEventCallBack(
                          DataSyncEventCode ev, DataSyncEventCallback func);
    • 以上的C语言DLL的名称为DataSyncDsk.dll,其中DataSyncEventCallback为C语言回调函数接口托管声明,但其用于新建的托管需为静态变量,以防止被自动垃圾回收器回收
    • public delegate void DataSyncEventCallback(UInt32 errCode, byte[] param);
    • 接口使用示例
    • // 回调函数声明
      private static CowDataUpdataInterface.DataSyncEventCallback m_hFileOp;
      
      // 回调函数注册
      m_hFileOp = new CowDataUpdataInterface.DataSyncEventCallback(this.onFileOpHandle );
      
      CowDataUpdataInterface.DataSyncRegisterEventCallBack(
              CowDataUpdataInterface.DataSyncEventCode.DATASYNC_EVENT_FILE_OP_FINISH, m_hFileOp );
      
      // 普通函数调用
      ASCIIEncoding ascii = new ASCIIEncoding();
      string strPath = "E:\\fuck\\";
      Byte[] bytePath = ascii.GetBytes(strPath);
      CowDataUpdataInterface.DataSyncMobinDir2Pc( bytePath);
  • 相关阅读:
    vue中常用的属性标签
    Vue 基本简介
    ES6 Map 和 WeakMap
    ES6 set/weakset
    ES6 generator生成器函数 async
    ES6 promise对象
    信息论-熵-随机变量-泛函
    机器学习一
    RS-232接口
    图的存储结构
  • 原文地址:https://www.cnblogs.com/shanwenbin/p/2727477.html
Copyright © 2020-2023  润新知