interface C/C com Python
A facilidade de uso e extensibilidade do Python o tornam uma linguagem atraente para programadores de todos os níveis. No entanto, há momentos em que a integração com as bibliotecas C/C existentes é desejável. Este artigo explora o método mais eficiente para a construção de ligações Python para essas bibliotecas. Diferentemente de outros métodos de ligação, o Ctypes não depende da versão Python contra a qual foi compilado, garantindo a compatibilidade com várias instalações do Python. para interface com Python, devemos declarar as funções como extern "c" para os ctypes reconhecê -los: 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 do ctypes import cdll
lib = cdll.loadlibrary ('./ libfoo.so')
classe foo (objeto):
def __init __ (self):
self.obj = lib.foo_new ()
Def Bar (self):
Lib.foo_bar (self.obj) f = foo ()
F.Bar () # imprime "Hello" para saída padrão #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
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3