2016-02-26 115 views
0

我得到的错误:错误痛饮接口类型表的

Warning 453: Can't apply (int DIM1,int DIM2,double** INPLACE_ARRAY1) . No typemaps are defined.

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

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

使用numpy.i我写的痛饮接口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" 

非常感谢您的建议。

回答

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)}; 

应该完全解决您的问题。