Swig界面中的typemap错误

时间:2016-02-26 13:22:56

标签: python c++ swig

我收到错误:

  

警告453:无法申请(int DIM1,int DIM2,double** INPLACE_ARRAY1)。没有定义任何类型图。

这里,我的C函数的原型如下:

void function(const int size1, double* Tab1,
              const int size2, double* Tab2,
              const int size3, double* Tab3,
              const double alpha)

使用numpy.i我按如下方式编写Swig接口function.i

%module function

%{
   #define SWIG_FILE_WITH_INIT
   #include "function.h"
%}

%include "numpy.i"

%init %{
    import_array();
%}

%apply (int DIM1, double* INPLACE_ARRAY1) {
          (const int size1, double* Tab1),
          (const int size2, double* Tab2),
          (const int size3, double* Tab3)};

%apply (int DIM1, int DIM2, double** INPLACE_ARRAY1) {
          (const int size1, const int size2, double** Tab1)};

%include "function.h"

提前感谢您的建议。

1 个答案:

答案 0 :(得分:0)

如果您查看numpy.i的文档,您会发现没有匹配(int DIM1, int DIM2, double** INPLACE_ARRAY1)的类型图。这就是警告的意思(不能应用类型映射,因为没有定义这样的。)

此外,我不清楚你想要实现的目标。 (const int size1, const int size2, double** Tab1)在函数中不作为参数出现,因此无论如何这样的类型映射都不会与您的函数匹配。

似乎只是删除了行

%apply (int DIM1, int DIM2, double** INPLACE_ARRAY1) {
      (const int size1, const int size2, double** Tab1)};

应该完全解决你的问题。