C# C到C(从C访问C DLL回调函数)
我想获得一些关于如何将下面的代码转换为C的支持。 我在C中有一个DLL,它有某些函数,我可以转换DLL调用,但该函数有一个回调声明,我无法将此C代码转换为C 这是C中的回调声明,如下所示:C# C到C(从C访问C DLL回调函数),c#,c++,dll,callback,C#,C++,Dll,Callback,我想获得一些关于如何将下面的代码转换为C的支持。 我在C中有一个DLL,它有某些函数,我可以转换DLL调用,但该函数有一个回调声明,我无法将此C代码转换为C 这是C中的回调声明,如下所示: typedef int(*FunctionPointer)(PTCallBackStructure TCallbackRecord, BSTR MessageFromDLL, BSTR &MessageToDLL); int test_DLL_Callback(PTCallBackStructur
typedef int(*FunctionPointer)(PTCallBackStructure TCallbackRecord,
BSTR MessageFromDLL, BSTR &MessageToDLL);
int test_DLL_Callback(PTCallBackStructure TCallbackRecord, BSTR MessageFromDLL,
BSTR &MessageToDLL)
{
....
return 0;
}
这是C代码中的回调函数itlself-实际上是从DLL调用的:
typedef int(*FunctionPointer)(PTCallBackStructure TCallbackRecord,
BSTR MessageFromDLL, BSTR &MessageToDLL);
int test_DLL_Callback(PTCallBackStructure TCallbackRecord, BSTR MessageFromDLL,
BSTR &MessageToDLL)
{
....
return 0;
}
这是DLL函数如何传递到DLL的代码:
DLL\U回调=测试DLL\U回调
PDllCommands = (DllCommands*)malloc((sizeof(DllCommands)));
PDllCommands->CallbackFunction = DLL_Callback;
...
结构PDLLCommands有一项用于回调函数,此结构传递给DLL。在正在进行的测试中,从DLL调用C代码中的回调
我希望现在我能澄清我的问题是什么。谢谢你的帮助。
请注意(这里提到过),委托在回调之前必须是活动的,但是如果您不保留对它的引用,GC将收集它 这个问题似乎离题了,因为它缺乏足够的信息来诊断问题。更详细地描述你的问题,或者在问题本身中加入一个最小的例子。如上所述。我想用C#编写这段代码,特别是回调相关的部分。我不认为有关翻译的问题离题,但我投票决定结束,因为仅仅要求人们为你翻译一段很长的代码并不真正符合这一点。我已经让我的问题更具体了,然而,我认为其他人正在编写更长的代码片段。谢谢。谢谢,但是基于我上面复制的代码snipet,解决方案会是什么样子呢?您应该创建一个签名与C函数指针兼容的委托。这包括为C中使用的类型创建二进制兼容类型,然后为该委托创建委托实例,并从中创建函数指针。