zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    (转)Maven实战(三)Eclipse构建Maven项目
    刷欢乐豆的方法
    R-pie()
    R-plot()
    10只老鼠与1000瓶药水
    资源共享
    第一只python小爬虫
    正则表达式之python实现
    马踏棋盘之贪心算法优化
    八皇后之回溯法解决
  • 原文地址:https://www.cnblogs.com/shanwenbin/p/2727477.html
Copyright © 2011-2022 走看看