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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM