我想得到一些支持,如何将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。
我希望现在我可以澄清我的问题所在。谢谢你的帮助。
答案 0 :(得分:0)
Creating function pointers from delegates
请注意(在那里提到),代表必须在回调之前处于活动状态,但如果您不继续引用它,GC将收集它。