///pure C DLL
#include "windows.h"
#define DLLEXPORT __declspec(dllexport)
extern "C"
{
DLLEXPORT int __stdcall timeChange(void (*onTimeChange)())
{
return onTimeChange();
}
}
///C#
class DLL
{
[DllImport"ctimechange.dll", CallingConvention = CallingConvention.StdCall)]
public static extern int timeChange(DOnTimeChange cb);
public delegate int DOnTimeChange();
public static void main()
{
DOnTimeChange cb = new DOnTimeChange(OnTimeChange);
timeChange(cb);
}
public static void OnTimeChange()
{
console.write("time changed");
}
}
2009年10月1日星期四
C#中的回调函数安装到C语言DLL中
例如,C语言编译的DLL中有个定时器,每过一定的时间产生一个TimeChange,但是当TimeChange发生后的具体处理,要在C#中实现。即将C#中的具体回调函数,安装到C编译的DLL中的TimeChange中。看下面的例子。
订阅:
博文评论 (Atom)
没有评论:
发表评论