如何在Swig中使用Python中的float **?

时间:2010-06-18 08:56:12

标签: python c pointers swig

我正在编写一些c函数的swig绑定。其中一个函数需要浮动**。我已经使用cpointer.i作为正常指针并查看了carrays.i,但是我找不到声明浮点数的方法**。你推荐什么?

接口文件:

  

extern int read_data(const char   * file,int * n_,int * m_,float ** data_,int ** classes _);

1 个答案:

答案 0 :(得分:1)

这个答案是一个相关问题的转贴,Framester发布了关于使用ctypes而不是swig的问题。我已将其包含在此处,以防任何网络搜索发现其原始问题的链接。

  

我在几个项目中使用了ctypes   现在并且对此非常满意   结果。我不认为我个人   需要一个指向指针的包装器   但是,从理论上讲,你应该能够   做以下事情:

from ctypes import * 

your_dll = cdll.LoadLibrary("your_dll.dll") 

PFloat = POINTER(c_float) 
PInt   = POINTER(c_int) 

p_data    = PFloat() 
p_classes = PInt() 
buff      = create_string_buffer(1024) 
n1        = c_int( 0 ) 
n2        = c_int( 0 ) 

ret = your_dll.read_data( buff, byref(n1), byref(n2), byref(p_data), byref(p_classes) ) 

print('Data:    ', p_data.contents) 
print('Classes: ', p_classes.contents)