擅长:python、mysql、java
<p>我想你需要用指针。我也不知道在混合类型映射和return语句时会发生什么。一个最小的示例文件<code>tst.i</code>:</p>
<pre><code>%module tst
%{
// declaration:
void add(long *resultLong, const long arg1,const long arg2);
long mul(const long a, const long b);
// the code:
void add(long *resultLong, const long arg1,const long arg2) {
*resultLong = arg1 + arg2;
}
long mul(const long a, const long b) {
return a*b;
}
%}
// The wrapper:
%apply (long* OUTPUT) { long* resultLong };
void add(long* resultLong, const long arg1,const long arg2);
long mul(const long a, const long b);
</code></pre>
<p>翻译后(我总是使用<a href="http://www.swig.org/Doc3.0/Introduction.html#Introduction_build_system" rel="nofollow">CMake</a>),python中的用法是:</p>
^{pr2}$
<p>我认为对于标量数据类型,使用return语句而不是typemaps更好。当连接数组时,我建议使用<a href="http://docs.scipy.org/doc/numpy/reference/swig.interface-file.html" rel="nofollow">numpy.i</a>的预定义类型映射。在</p>