Eryk Sun <eryk...@gmail.com> added the comment:

> With Python 3.7.6 this raises an exception at the ctypes.CFUNCTYPE() 
> call with
> ...
> TypeError: item 1 in _argtypes_ passes a struct/union with a bitfield
> by value, which is unsupported.

I cannot reproduce the problem as stated in 3.7.6 in Windows. The TypeError 
only occurs if I use the struct type directly in argtypes, not a pointer to the 
struct type. For example:

    >>> class A(ctypes.Structure):
    ...     _fields_ = (('x', ctypes.c_uint, 1),)

    >>> class P_A(ctypes._Pointer):
    ...     _type_ = A
    ...

allowed:

    >>> class FP_P_A(ctypes._CFuncPtr):
    ...     _flags_ = ctypes._FUNCFLAG_CDECL
    ...     _argtypes_ = (P_A,)

disallowed:

    >>> class FP_A(ctypes._CFuncPtr):
    ...     _flags_ = ctypes._FUNCFLAG_CDECL
    ...     _argtypes_ = (A,)
    ...
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: item 1 in _argtypes_ passes a struct/union with a bitfield by 
value, which is unsupported.

This seems rights to me. There is no problem passing a pointer as a function 
parameter.

----------
nosy: +eryksun

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue39295>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to