2016-02-26 108 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)}; 

應該完全解決您的問題。