Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah ctypes Boleh Menjembatani Perpustakaan Python dan C/C dengan lancar?

Bagaimanakah ctypes Boleh Menjembatani Perpustakaan Python dan C/C dengan lancar?

DDD
Lepaskan: 2024-12-26 18:37:14
asal
452 orang telah melayarinya

How Can ctypes Seamlessly Bridge Python and C/C   Libraries?

Memanggil C/C daripada Python dengan ctypes

Apabila ingin mewujudkan jambatan antara Python dan C/C , modul ctypes muncul sebagai pilihan yang diutamakan. Penyepaduan lancarnya dengan perpustakaan standard Python memastikan kestabilan dan kebolehcapaian yang meluas. Tidak seperti swig, yang kadangkala boleh menghadapi masalah, ctypes menyediakan jambatan yang boleh dipercayai antara dua bahasa.

ctypes cemerlang dalam keupayaannya untuk mengendalikan kebergantungan masa kompilasi pada Python, membolehkan pengikatan anda berfungsi dengan sempurna pada mana-mana pemasangan Python yang menyokong ctypes, tanpa mengira versi yang digunakan untuk penyusunan.

Untuk menggambarkan penggunaannya, pertimbangkan kelas C berikut bernama Foo:

#include <iostream>

class Foo {
public:
    void bar() {
        std::cout << "Hello" << std::endl;
    }
};
Salin selepas log masuk

Memandangkan ctypes hanya boleh berinteraksi dengan fungsi C, anda mesti mengisytiharkan fungsi ini sebagai "C" luaran:

extern "C" {
    Foo* Foo_new() { return new Foo(); }
    void Foo_bar(Foo* foo) { foo->bar(); }
}
Salin selepas log masuk

Kompilkan kod ini ke dalam perpustakaan kongsi:

g++ -c -fPIC foo.cpp -o foo.o
g++ -shared -Wl,-soname,libfoo.so -o libfoo.so  foo.o
Salin selepas log masuk

Akhir sekali, buat pembungkus Python untuk merapatkan sambungan:

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)
Salin selepas log masuk

Dengan persediaan ini, anda boleh menggunakan perpustakaan C daripada Python dengan mudah:

f = Foo()
f.bar()  # Prints "Hello" on the screen
Salin selepas log masuk

ctypes menyediakan penyelesaian yang mudah dan cekap untuk membina pengikatan Python pada perpustakaan C/C , memudahkan kesalingoperasian yang lancar antara bahasa pengaturcaraan ini.

Atas ialah kandungan terperinci Bagaimanakah ctypes Boleh Menjembatani Perpustakaan Python dan C/C dengan lancar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan