0
我的主板上有.NET應用程序和C代碼。 .NET應用程序會以回調函數作爲參數調用C函數(要觀看按鈕是否被按下?)並結束它的任務。我的C應用程序將觀察按鈕並按下按鈕時回調函數(.NET)必須被調用。 如何從我的C代碼中調用回調函數(的.NET)?從處理器調用.NET應用程序的回調函數C代碼
我的主板上有.NET應用程序和C代碼。 .NET應用程序會以回調函數作爲參數調用C函數(要觀看按鈕是否被按下?)並結束它的任務。我的C應用程序將觀察按鈕並按下按鈕時回調函數(.NET)必須被調用。 如何從我的C代碼中調用回調函數(的.NET)?從處理器調用.NET應用程序的回調函數C代碼
關於函數的C定義,回調函數應該表示爲函數指針。爲了簡單起見,假設回撥返回void
並且沒有參數。
void NativeMethod(void (*pCallback)(void)) {
...
}
一旦調用了這段代碼,C代碼就會有一個簡單的函數指針。它可以在需要時調用它,並且它將轉換爲.Net代碼。
在.Net方面,我們需要定義函數指針類型的委託和用於調用C代碼的PInvoke存根。
delegate void CallbackFunc();
[DllImport("the_native_dll")]
static extern void NativeMethod(
[MarshalAs(UnmanagedType.FunctionPtr)] CallbackFunc cb)
現在的C#代碼可以通過使用標準的代表
這是非常整潔的
NativeMethod
函數調用到本機代碼,我還以爲你至少需要上下文參數什麼的。 – zneak謝謝。它幫助了我。 – androidbuddy