bearophile wrote:
Walter Bright:

Ok, does this work:

p = libc.malloc(100); *p = 3;

? Or this:

struct S { int a; char b; }; S s; libc.fillInS(&s);

The purpose of ctypes is to interface Python with C libs, it's a
quite well designed piece of software engineering. This is how you
can do what you ask for:

from ctypes import POINTER, Structure, cdll, c_int, c_char

libc = cdll.msvcrt # on Windows # libc = CDLL("libc.so.6") # on linux
 malloc = libc.malloc

malloc.restype = POINTER(c_int) p = malloc(100) p[0] = 3

#-----------------

class S(Structure): _fields_ = [("a", c_int), ("b", c_char)]

s = S() # AttributeError: function 'fillInS' not found libc.fillInS(byref(s))

Bye, bearophile

Doable, yes, simple, no. For example, it's clear it cannot be linked directly to C. The C code must be installed into a shared library first.

Reply via email to