我正在使用.NET内的C库 一切都很好。但是我遇到了回调函数的麻烦。
我有这个C代码:
Bool someCallBack(const char *name, int reason)
{
//some logic here
return True;
}
int main(int argc, char **argv){
SetCallback(someCallBack)
}
在头文件中,SetCallback定义为:
typedef Bool (*CallbackType)(const char *name, int reason);
#define DLL_USE __declspec(dllimport)
DLL_USE void SetCallback(CallbackType callBack);
当我执行一个触发回调的函数时,这一切都在C中正常工作。
现在我想在.NET中执行此操作
在.NET中我有这段代码
<DllImport(CST.LIBRARY_NAME, entrypoint:="SetCallback")> _
Public Shared Sub SetCallback(ByVal callBack As CallbackType)
End Sub
Delegate Function CallbackType(ByVal name As StringBuilder, ByVal reason As Integer) As Boolean
Private Function TEST(ByVal name As StringBuilder, ByVal reason As Integer) As Boolean
Debug.WriteLine("Hello Callback")
Return True
End Function
SetCallback(New CallbackType(AddressOf TEST))
当我现在执行触发回叫的函数时,永远不会触发回调函数。
这是互操作回调函数的正确方法吗? 或者还有什么可能是错的。