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.