在c++中有个回调函数指针的概念,只需要某个函数在调用定时器函数时传入一个函数指针就能达到目的,但C#中没有函数指针的概念,我们该怎样来实现呢。 首先用c++写一个带有回调函数的方法 Test,在此省略。 接着,在c#中调用,如: [DllImport("Test.dll",ChartSet.Ansi,EntryPoint="ReadMyVideo",ExactSpelling=false,CallingConvertion=CallingConvertion.StdCall)] private static extern void Test(string fileName,CallbackDelegate callback); public delegate void CallbackDelegate([marshalAs(UnmanagedType.LPArray,SizeConst=8010)]byte[] buffer,int count); public static CallbackDelegate callback; 接下来看看怎样来调用: 在调用时,我们得先写一个接受c++传回参数的方法,即我们传入委托的实现方法。 private void CallBackFunction([marshalAs(UnmanagedType.LPArray,SizeConst=8010)]byte[] buffer,int count) { ...//处理c++传过来的数据s } public void GetData() { callback=CallBackFunction; ReadMyVideo("",callback); } |
|
来自: ThinkTank_引擎 > 《SDK》