Python Glossary English

все 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Сообщить о неточности