[Numpy-discussion] ArgumentError when using numpy.ctypeslib.ndpointer

Christoph Gohlke cgohlke@uci....
Sun Mar 11 03:09:19 CDT 2012


Hello,

I am unable to get the simple numpy.ctypeslib.ndpointer docstring 
example from 
<http://docs.scipy.org/doc/numpy/reference/routines.ctypeslib.html> 
working on Windows.

Given a DLL `foo.dll` that exports a function `int bar(double *)`, 
calling foo.bar using the np.ctypeslib.ndpointer approach always fails 
with a ctypes.ArgumentError:

In [5]: foo = ctypes.CDLL('foo.dll')
In [6]: foo.bar.argtpes = [np.ctypeslib.ndpointer(dtype=np.float64, 
ndim=1, flags='C_CONTIGUOUS')]
In [7]: a = np.array([1, 2, 3], dtype=np.float64)
In [8]: foo.bar(a)
ArgumentError: argument 1: <type 'exceptions.TypeError'>: Don't know how 
to convert parameter 1

This works as expected:

In [9]: c_double_p = ctypes.POINTER(ctypes.c_double)
In [10]: foo.bar.argtpes = [c_double_p]
In [11]: foo.bar(a.ctypes.data_as(c_double_p))
Out[11]: 0

What am I missing? I also tried ndpointer(), several numpy and Python 
versions, real DLLs, and argument types. A self contained script is 
attached.

Thank you,

Christoph
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ndpointer_test.py
Type: text/x-python
Size: 695 bytes
Desc: not available
Url : http://mail.scipy.org/pipermail/numpy-discussion/attachments/20120311/f3978ba0/attachment.py 


More information about the NumPy-Discussion mailing list