gpt4 book ai didi

c# - SWIG 中的委托(delegate) - C#

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:46:49 25 4
gpt4 key购买 nike

(http://old.nabble.com/C%2B%2B-pointer-to-method-as-parameter-to-C--td17645155.html 的完整拷贝,但无法使建议的宏工作)

我有以下 C++ 函数(简化):

InputPort addInputPort(void(*callback)(InputPort));

问题:生成的 C# 函数的签名是:

public InputPort addInputPort(SWIGTYPE_p_f__InputPort____void callback)

SWIGTYPE_p_f__InputPort____void 不是委托(delegate)(并且没有公共(public)构造函数),所以我不能使用 addInputPort。

如何让 SWIG 改用委托(delegate)?如果解决方案涉及 %typemap,对我格外耐心...

最佳答案

解决方案涉及 %typemap。您看到的效果是未知类型的默认无用映射。在您的例子中,未知类型是函数类型 void *(InputPort)

事实上,SWIG 的所有翻译都基于已经编写并存在于标准 SWIG 库中的 %typemaps。您可以在此 Subversion location 中研究 C# 的初始 %typemaps .

特别是,在 csharphead.swg 中查找 SWIGStringHelper .该代码将委托(delegate)映射到 C 回调。诀窍是在 SWIG 模块中添加辅助回调实现。

关于c# - SWIG 中的委托(delegate) - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6599373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com