刚开始深入了解SIP。我有一个.h文件,其中包含以下公共方法:
void Allocate(int width, int height, int pitch, bool withHost, float *devMem = NULL, float* hostMem = NULL);
我创建了一个相应的.sip文件:
1 //SIP wrapper for CUDA Image
2
3 class CudaImage
4 {
5 %TypeHeaderCode
6 #include "cudaImage.h"
7 %End
8
9 public:
10 CudaImage();
11
12 void Allocate(int width, int height, int pitch, bool withHost, float *devMem=NULL, float *hostMem=NULL) /KeywordArgs="All"/;
13 double Download();
14
15
16 int width;
17 int height;
18 int pitch;
19 };
使用CMake,我有构建工作,可以将模块导入Python并可以调用构造函数(因此成功有限)。我也可以调用Allocate方法。不幸的是,在Python方面,我无法公开float *devMem=NULL
或float *hostMem=Null
个参数。我已经阅读了SIP文档,并且没有任何注释因缺失而跳出来。
最终目标是将一个numpy数组(我相信的.data属性)传递给hostMem
参数。
如何在SIP中暴露指针?那些带有默认值NULL参数的指针呢?
(Python 3.5,PyQt4,SIP 4.18.x)
答案 0 :(得分:0)
我使用ctypes.POINTER
解决了这个问题https://docs.python.org/3/library/ctypes.html#ctypes.POINTER
您可以为NULL指针传入None。
答案 1 :(得分:0)
您可以尝试" / In /"注释:
void Allocate(int width, int height, int pitch, bool withHost, float* devMem /In/ = NULL, SIP_PYOBJECT *hostMem /In/ = NULL) /KeywordArgs="All"/;
如果有效,请告诉我。