python中mapping_用于Python接口的C库的%typemapping

我想为我的C库创建一个python包装器.如果将std :: vector自动转换为python列表,并且反过来进行转换,那将很酷.

不幸的是,如果我将此代码添加到我的接口文件中,我仍然会在运行时出错.

%typemap(in) std::vector value (std::vector vIn) {

int iLen = PySequence_Length($input);

for(unsigned int i = 0; i < iLen; i++) {

PyObject *o = PySequence_GetItem($input, i);

if (PyNumber_Check(o)) {

vIn.push_back((float)PyFloat_AsDouble(o) );

}

}

$1 = vIn;

}

%typemap(out) std::vector {

std::vector vOut = $1;

int iLen = vOut.size();

$result = PyList_New(iLen);

for(unsigned int i = 0; i < iLen; i++) {

double fVal = vOut.at(i);

PyObject *o = PyFloat_FromDouble((double) fVal);

PyList_SetItem($result, i, o);

}

}

类头:

class TrainingSet {

private:

std::vector<:vector> > m_vInputList;

std::vector<:vector> > m_vOutputList;

public:

void AddInput(const std::vector &vIn);

// ..

Python代码:

trainSet = TrainingSet()

trainSet.AddInput([0.5, 0.5, 0.5])

错误:

File "runSOMNet.py", line 9, in

trainSet.AddInput([0.5, 0.5, 0.5])

File "/home/dgrat/annetgpgpu/build/ANNet/ANPyNetCPU.py", line 674, in AddInput

def AddInput(self, *args): return _ANPyNetCPU.TrainingSet_AddInput(self, *args)

NotImplementedError: Wrong number or type of arguments for overloaded function 'TrainingSet_AddInput'.

Possible C/C++ prototypes are:

ANN::TrainingSet::AddInput(std::vector< float,std::allocator< float > > const &)

ANN::TrainingSet::AddInput(float *,unsigned int const &)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值