все Python 3ctypesфункция
ctypes.CDLL
загрузка библиотек
Загружает динамическую библиотеку на C (.so, .dylib, .dll) и даёт вызывать её функции как атрибуты объекта.
Синтаксис
lib = ctypes.CDLL(name)
lib.func.argtypes = [ctypes.c_int]
lib.func.restype = ctypes.c_int
Без описания типов ctypes считает, что функция принимает и возвращает int: для double или указателя результат будет мусором. Поэтому задавайте argtypes и restype у каждой функции. Ошибка в типах не даёт исключения, а может уронить весь интерпретатор. Имя библиотеки зависит от системы, переносимо её ищет ctypes.util.find_library('c').
Примеры
import ctypes
import ctypes.util
libc = ctypes.CDLL(ctypes.util.find_library('c')) # → ? имя библиотеки зависит от системы
libc.strlen.argtypes = [ctypes.c_char_p]
libc.strlen.restype = ctypes.c_size_t
print(libc.strlen(b'hello')) # → ? 5 — функция стандартной библиотеки C
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности