взаимодействие C/C с python
простота использования и расширяемость Python делает его привлекательным языком для программистов всех уровней. Тем не менее, бывают случаи, когда интеграция с существующими библиотеками C/C желательна. В этой статье рассматривается наиболее эффективный метод для построения привязки Python для этих библиотек. В отличие от других методов привязки, CTYPES не полагается на версию Python, против которой она была скомпилирована, обеспечивая совместимость с различными установками Python.
] рассмотрите следующий фрагмент кода, написанный в C:
#include extern "c" {{
Foo* foo_new () {return new foo (); }
void foo_bar (foo* foo) {foo-> bar (); }
} g -c -fpic foo.cpp -o foo.o
g -shared -wl, -soname, libfoo.so -o libfoo.so foo.o из Ctypes import cdll
lib = cdll.loadlibrary ('./ libfoo.so')
класс foo (объект):
def __init __ (self):
self.obj = lib.foo_new ()
def Bar (Self):
lib.foo_bar (self.obj) f = foo ()
f.bar () # Печать «Привет» на стандартный выход #include
extern "C" {
Foo* Foo_new(){ return new Foo(); }
void Foo_bar(Foo* foo){ foo->bar(); }
}
g -c -fPIC foo.cpp -o foo.o
g -shared -Wl,-soname,libfoo.so -o libfoo.so foo.o
from ctypes import cdll
lib = cdll.LoadLibrary('./libfoo.so')
class Foo(object):
def __init__(self):
self.obj = lib.Foo_new()
def bar(self):
lib.Foo_bar(self.obj)
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3