python – SWIG:没有定义任何类型图
发布时间:2020-05-23 19:43:52 所属栏目:Python 来源:互联网
导读:我有一个c类,我试图使用SWIG为 Python包装.我在尝试包装一个以数组作为输入的函数时遇到了麻烦. 这是头文件, class dyndiff_data_t { private: double H[3]; double GAMMA; double k; double P; public:
|
我有一个c类,我试图使用SWIG为 Python包装.我在尝试包装一个以数组作为输入的函数时遇到了麻烦. 这是头文件, class dyndiff_data_t
{
private:
double H[3];
double GAMMA;
double k;
double P;
public:
dyndiff_data_t(double H_[3],const double GAMMA_,const double k_,const double P_);
void test();
};
这是swig接口文件, %module twowave
%{
#define SWIG_FILE_WITH_INIT
#include <twowave.h>
%}
%include "numpy.i"
%init %{
import_array();
%}
%apply (double IN_ARRAY1[3]) {(double H_[3])};
%include <twowave.h>
问题是对于数组输入,SWIG抱怨没有类型映射.我不明白为什么. numpy.i文件取自here,我正在使用的类型映射描述为here 任何帮助,将不胜感激. 解决方法问题是numpy.i中的typemap定义了一个两个参数typemap,并且你试图将它应用于一个参数.如果在函数中有参数int len1和double * vec1,这将有效:%apply (int DIM1,double* IN_ARRAY1) {(int len,double* H_)}
而不是编写自己的类型图,只需使用carrays.i. 如果你想写一个类型图,例如取一个双打元组作为输入,它看起来像: %typemap(in) double TUPLE[ANY]
{
...
}
在这种情况下,您可以按照预期的方式将其应用于您的功能. %apply double TUPLE[3] {double H_[3]}
在尝试找出无法使用类型映射的原因时,一个好的开始是使用-tmsearch选项运行SWIG.在尝试匹配您的函数参数时,它会告诉您它正在寻找什么. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
