【发布时间】:2019-01-14 19:20:32
【问题描述】:
我是 swig 的新手,并尝试在文档中搜索答案,但我要么错过了答案,要么在看到答案时没有认出答案。
我有一个来自第三方的大型 C++ 库,除了标头之外我没有源代码。我需要从 python 访问一些 API,其中一些 API 的函数原型类似于:
int foo(int& a, int& b, int& c);
我创建了一个 .i 文件,如下所示:
%module myWrapper
%{
#include libraryHeader.h
%}
extern int foo(int& m1, int& m2, int& bf);
这通过 swig、g++ 编译器和链接器没有问题。我可以将模块导入 python,但是当我调用它时,我收到以下错误:
TypeError:在方法“foo”中,类型为“int &”的参数 1
我已经声明了 3 个 int 变量,例如 m1 = 0; m2 = 0; bf = 0 所以我传入了 something。有没有办法使用 typemaps.i 库或显式使用 typemaps 来做到这一点?文档在这个主题上似乎有点含糊。
提前致谢, 保罗
【问题讨论】:
-
您所做的一切都是正确的。这里唯一的复杂之处是您有一个非构造引用,需要一些特殊处理才能使其正常工作。只要您了解语义,这些都与缺乏源代码无关。
-
大家好,感谢您的帮助。我能够解决我的问题,并且我已经在下面回答了我自己的问题......