「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > CTYPEを使用してC/C ++ライブラリのPythonバインディングを効率的に作成するにはどうすればよいですか?

CTYPEを使用してC/C ++ライブラリのPythonバインディングを効率的に作成するにはどうすればよいですか?

2025-02-06に投稿しました
ブラウズ:355

How Can I Efficiently Create Python Bindings for C/C   Libraries Using ctypes?

c/cとpython

これをpythonとインターフェイスするには、それらを認識するためのctypesの関数をextern "c"として宣言する必要があります:

extern "c" { foo* foo_new(){return new foo(); } void foo_bar(foo* foo){foo-> bar(); } }

次に、
#include 

class 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 

最後に、pythonラッパーを作成します:
#include 

class Foo{
    public:
        void bar(){
            std::cout  from ctypesインポートcdll
lib = cdll.loadlibrary( './ libfoo.so')

クラスfoo(オブジェクト):
    def __init __(self):
        self.obj = lib.foo_new()

    def bar(self):
        lib.foo_bar(self.obj)

このラッパーとともに、PythonでCライブラリと対話できます:
#include 

class Foo{
    public:
        void bar(){
            std::cout  f = foo()
f.bar()#標準出力

に "hello"を印刷します

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3