從Python 呼叫C/C
在使用Windows 系統時,有效地將Python 綁定到C/C 函式庫至關重要。在可用的選項中,ctypes 模組脫穎而出,是一個引人注目的選擇。
利用 Ctypes 進行綁定
Ctypes 是 Python 標準函式庫的一個組成部分。與其他替代方案相比,這種固有的穩定性和廣泛的可用性使其成為一個有利的選擇。此外,ctypes 綁定經過定制,可與支援 ctypes 的每個版本的 Python 無縫協作,而不僅僅是編譯期間使用的版本。
使用Ctypes 建構Python 綁定
考慮在foo.cpp 中定義一個名為Foo 的簡化C 類別:
#include <iostream> class Foo{ public: void bar(){ std::cout << "Hello" << std::endl; } };
以
以方便通訊透過ctypes 使用Python,其函數必須宣告為extern "C":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)
f = Foo() f.bar() # Outputs "Hello" to the screen
Ctypes 的好處
Ctypes 簡化了將C/C 程式碼綁定到Python 的過程,在Windows 系統上提供了穩定且穩定且廣泛適用的解決方案。它提供了一種強大且交叉相容的方法來與 Python 的本機庫進行互動。以上是Ctypes 如何在 Windows 上高效能橋接 Python 和 C/C?的詳細內容。更多資訊請關注PHP中文網其他相關文章!