C到C#(从C#访问C DLL回调函数)

芬戈马

我想获得一些支持,如何将下面的代码C转换为C#。我在C中有一个DLL,它具有某些功能,可以转换DLL调用,但是该功能具有一个回调声明,并且无法将此C代码转换为C#。

这是C语言中的回调声明,如下所示:

typedef int(*FunctionPointer)(PTCallBackStructure TCallbackRecord, 
BSTR MessageFromDLL, BSTR &MessageToDLL);

这是C代码本身的回调函数-实际上是从DLL调用的:

int test_DLL_Callback(PTCallBackStructure TCallbackRecord, BSTR MessageFromDLL, 
BSTR   &MessageToDLL)
{
 ....
 return 0;
}

这是DLL函数如何传递给DLL的代码: DLL_Callback = test_DLL_Callback;

PDllCommands = (DllCommands*)malloc((sizeof(DllCommands)));
PDllCommands->CallbackFunction = DLL_Callback;
...

结构PDLLCommands的回调函数只有一项,该结构被传递给DLL。在进行中,从DLL的C代码中调用test_DLL_Callback。

我希望现在我可以澄清我的问题是什么。谢谢你的帮助。

佐洛米·波罗维兹(Shlomi Borovitz)

从委托创建函数指针

请注意(在那儿提到),委托必须一直活到回调为止,但是如果您不继续引用它,则GC会收集该委托。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章