SWIG - c#中的委托
Delegates in SWIG - C#
本文关键字:SWIG 更新时间:2023-10-16
(完整复制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
不是委托(并且没有公共构造函数),所以我不能使用addInputPort。
我如何告诉SWIG使用委托代替?如果解决方案涉及%typemap, 请对我格外耐心…
解决方案涉及到%typemap。您看到的效果是未知类型的默认无用映射。在您的示例中,未知类型是函数类型void *(InputPort)
。
实际上,所有SWIG的翻译都是基于已经编写并存在于标准SWIG库中的%typemaps。您可以在这个Subversion位置研究c#的初始%类型映射。
特别是在csharphhead .swg中查找SWIGStringHelper
。该代码将委托映射到C回调。诀窍是在SWIG模块中添加一个helper回调实现。
相关文章:
- Python 3.7 和 excess_args 的 SWIG 问题
- 从具有默认值的部分指定模板类继承时发生SWIG错误,具有不带默认值的正向声明
- 为重写std::exception的库生成swig接口时出错
- 元组由 Swig 生成的 Python 包装器返回,用于C++向量
- 无法使用 SWIG 在 Python 中实例化C++类(获取属性错误)
- SWIG Java 在使用 -DSWIGWORDSIZE64 时将int64_t转换为 jlong
- 使用 SWIG 更改生成的 CS 函数中的返回类型
- 在模板化函数中重新定义(忽略)的 SWIG 标识符
- 使用 swig 追加到字节数组
- 如何使用 swig 修改类构造函数以保留对其中一个构造函数参数的引用?
- Java SWIG wrapper vs direct function calling
- <string> 如何在使用 SWIG 时将 int 数组和 List 作为参数传递给 C# C++
- 类型为 'std::map< char,int > 的 <Swig 对象的代理
- 使用SWIG从C++回调到C#
- 从 C++ 到 Python 的 SWIG:未定义的符号导入问题
- 如何使用 swig C++命名空间作为 python 模块公开
- 分解SWIG Python接口 - 容器会产生命名空间冲突
- 在自定义类型图中重用 SWIG 映射
- 使用 Swig 在成员中包装具有互斥锁的 C++ 类时出现问题
- 如何制作一个满足SWIG中接口的python类