|
在c++中有個回調(diào)函數(shù)指針的概念,只需要某個函數(shù)在調(diào)用定時器函數(shù)時傳入一個函數(shù)指針就能達到目的,但C#中沒有函數(shù)指針的概念,我們該怎樣來實現(xiàn)呢。 首先用c++寫一個帶有回調(diào)函數(shù)的方法 Test,在此省略。 接著,在c#中調(diào)用,如: [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; 接下來看看怎樣來調(diào)用: 在調(diào)用時,我們得先寫一個接受c++傳回參數(shù)的方法,即我們傳入委托的實現(xiàn)方法。 private void CallBackFunction([marshalAs(UnmanagedType.LPArray,SizeConst=8010)]byte[] buffer,int count) { ...//處理c++傳過來的數(shù)據(jù)s } public void GetData() { callback=CallBackFunction; ReadMyVideo("",callback); } |
|
|
來自: ThinkTank_引擎 > 《SDK》