Python 표준 라이브러리의 일부인 CTypes 모듈은이 작업에 안정적이고 널리 사용 가능한 솔루션을 제공합니다. 다른 바인딩 방법과 달리 CTYPES는 컴파일 된 Python 버전에 의존하지 않으므로 다양한 Python 설치와의 호환성을 보장합니다. C :
#로 작성된 다음 코드 스 니펫을 고려하십시오.
extern "C"{ foo* foo_new () {return new foo (); } void foo_bar (foo* foo) {foo-> bar (); } }
#includeclass Foo{ public: void bar(){ std::cout 다음으로, 우리는이 코드를 다음을 사용하여 공유 라이브러리로 컴파일합니다. g -c -fpic foo.cpp -o foo.o g -shared -wl, -soname, libfoo.so -o libfoo.so foo.o
#includeclass Foo{ public: void bar(){ std::cout 마지막으로, 우리는 python 래퍼를 만듭니다 : ctypes import cdll. lib = cdll.loadlibrary ( './ libfoo.so') 클래스 foo (Object) : def __init __ (self) : self.obj = lib.foo_new () def bar (self) : lib.foo_bar (self.obj)
#includeclass Foo{ public: void bar(){ std::cout 이 래퍼를 사용하여 Python의 C 라이브러리와 상호 작용할 수 있습니다 : f = foo () f.bar () # 표준 출력에 "hello"인쇄
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3