- 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);
转载于:https://www.cnblogs.com/shanwenbin/archive/2012/10/17/2727477.html