为 numpy 创建一个简单的 SWIG 类型图
Creating a simple SWIG typemap for numpy
我一直在使用数字python/SWIG/C++组合,使用著名的"numpy.i"SWIG模板文件(ARGOUTVIEW,INPLACE等数组,请参阅:http://docs.scipy.org/doc/numpy-1.10.0/reference/swig.interface-file.html(。
但是,为了真正学习一些东西,我想为 numpy 数组创建我自己的类型图。 首先,只是一些非常简单的事情:
我们在python中有一个字节缓冲区numpy数组,我们想以最简单的方式将其传递给C(++(:C(++(获取指向字节缓冲区的指针(是的,我知道..垃圾收集..危险(。
我已经用以下 swig 代码尝试过这个(注释掉的行和活动行都没有成功(:
%typemap(in) (uint8_t* bytebuffer) {
PyObject* x_array = PyArray_FROM_OTF($input, NPY_UINT8, NPY_ARRAY_IN_ARRAY);
// PyArray* x_array = PyArray_FROM_OTF($input, NPY_UINT8, NPY_ARRAY_IN_ARRAY);
// PyObject* x_array = PyArray_FROM_O($input);
// $1 = (uint8_t*)PyArray_DATA(x_array);
// $1 = (uint8_t*)PyArray_DATA($input);
$1 = static_cast<uint8_t*>(PyArray_DATA($input));
}
我为每个案例都会得到一些东西,比如:
error: cannot convert ‘PyObject* {aka _object*}’ to ‘PyArrayObject* {aka tagPyArrayObject*}’ for argument ‘1’ to ‘void* PyArray_DATA(PyArrayObject*)’
我已经阅读了一些numpy api(请参阅:http://docs.scipy.org/doc/numpy-1.10.0/reference/c-api.array.html#array-structure-and-data-access(,但我似乎误解了一些东西..没有奇怪的方法可以使这个#%@工作! 帮助!
好的。在分析了"numpy.i"的作用之后,我发现了灵丹妙药:
$1=(uint8_t*)(PyArray_DATA((PyArrayObject*)$input));
对不起,垃圾邮件。
相关文章:
- 在c++中用vector填充一个简单的动态数组
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的简单if-else语句是如何无法访问的代码
- 使用简单类型列表实现的指数编译时间.为什么
- Python 3.7 和 excess_args 的 SWIG 问题
- 如何在BST的这个简单递归实现中消除警告
- 一种在C++中读取TXT配置文件的简单方法
- 关于简单C++函数(is_palindrome)的逻辑的问题
- 显示错误输出的简单数组排序程序
- 当无法使用模板和宏时,生成类型变体C++代码的最简单方法是什么?
- 退出简单while循环时出现问题
- 为什么简单的算术减法在"if"条件下不起作用?
- 从具有默认值的部分指定模板类继承时发生SWIG错误,具有不带默认值的正向声明
- 为具有多个参数的函数创建 SWIG 类型图的更简单方法?
- Swig 简单类型 typedef 参数
- swig:接口简单的C 类,返回向量
- 将简单的 Java 数组传递给原始的 C 数组 SWIG
- 为 numpy 创建一个简单的 SWIG 类型图
- VS2008 中的简单 swig python 示例 - 导入错误 - 内部 (py)readline 错误
- 使用SWIG封装c++类以在Lua中使用它-需要一个简单的例子