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

时间:2014-03-08 15:39:51

标签: c# c++ dll callback

我想得到一些支持,如何将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。

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

1 个答案:

答案 0 :(得分:0)

Creating function pointers from delegates

请注意(在那里提到),代表必须在回调之前处于活动状态,但如果您不继续引用它,GC将收集它。