Cal*_*602 6 c# c++ swig delegates
(http://old.nabble.com/C%2B%2B-pointer-to-method-as-parameter-to-C--td17645155.html的完整副本,但无法使建议的宏工作)
我有以下C++函数(简化):
InputPort addInputPort(void(*callback)(InputPort));
Run Code Online (Sandbox Code Playgroud)
问题:生成的C#函数的签名是:
public InputPort addInputPort(SWIGTYPE_p_f__InputPort____void callback)
Run Code Online (Sandbox Code Playgroud)
SWIGTYPE_p_f__InputPort____void 不是委托(并且无论如何也没有公共构造函数),所以我不能使用addInputPort.
如何告诉SWIG使用代理呢?如果解决方案涉及%typemap,请额外耐心等待我...
解决方案涉及 %typemap。您看到的效果是未知类型的默认无用映射。在您的情况下,未知类型是 function type void *(InputPort)。
事实上,SWIG 的所有翻译都是基于 %typemaps 的,这些映射已经在标准 SWIG 库中编写并存在。您可以在此Subversion 位置调查 C# 的初始 %typemaps 。
SWIGStringHelper特别是在csharphead.swg中查找。该代码将委托映射到 C 回调。诀窍是在 SWIG 模块中添加辅助回调实现。
| 归档时间: |
|
| 查看次数: |
1704 次 |
| 最近记录: |