Rumah >pembangunan bahagian belakang >C++ >Membungkus C/C++ ke dalam Python menggunakan SWIG
Terdapat banyak cara untuk merangkum fungsi C atau C++ sedia ada dalam Python. Dalam bahagian ini, kita akan melihat cara menggunakan SWIG untuk membungkus fungsi C/C++. Berikut ialah pilihan lain untuk membungkus fungsi C/C++ dalam python.
SWIG (Simple Wrapper Interface Generator) mampu menggunakan banyak bahasa lain termasuk Perl, Python, PHP, Ruby, Tcl, C#, Common Lisp (CLISP, Allegro , UFFI , CFFI), Java, Modula-3 dan OCAML juga menyokong pelaksanaan Skim yang ditafsir dan disusun (seperti Guile, MzScheme, Chicken
Tetapi kami hanya akan membincangkan pelaksanaannya menggunakan python
SWIG bahasa makro yang memahami kod C dan kemudian mengeluarkan kod pembalut untuk bahasa pilihan anda
Saya menggunakan pemasang windows swig "swigwin-3.0.12" yang boleh anda muat turun daripada:
http: //www.swig.org/download.html
Selain itu, anda juga mungkin memerlukan "Microsoft Visual Studio 14.0" atau lebih tinggi untuk menjalankan program swig dalam Windows
Untuk arahan menggunakan swig, katakan kami mempunyai beberapa c fungsi dan kami ingin menambahkannya ke bahasa lain seperti Tcl, Perl, Python (saya berinteraksi dengan python), Java dan C#
#include "example.h" int fact(int n) { if (n < 0) { /* This should probably return an error, but this is simpler */ return 0; } if (n == 0) { return 1; } else { /* testing for overflow would be a good idea here */ return n * fact(n-1); } }
Sekarang, jika anda ingin menambah fail c pada bahasa pilihan anda, anda perlu menulis "fail antara muka" yang merupakan input kepada fail antara muka contoh.c saya ialah,
/* File: example.i */ %module example %{ #define SWIG_FILE_WITH_INIT #include "example.h" %} %include "example.h"
Fail pemasangan:
int fact(int n);
from distutils.core import setup, Extension example_module = Extension('_example', sources=['example_wrap.c', 'example.c'], ) setup (name = 'example', version = '0.1', author = "SWIG Docs", description = """Simple swig example from docs""", ext_modules = [example_module], py_modules = ["example"], )
>swig -python example.i
Jadi jika fail contoh anda ialah test.c, maka fail pembalut anda akan menjadi "test_wrapper.c". itu. Sekarang kita boleh membungkus bahasa C ke dalam bahasa Python Untuk menyemaknya, anda boleh terus menjalankan atau mencipta satu persekitaran maya dan dijalankan secara berasingan.
“Your_File_Name” + “_wrapper” + “Your_language_extension”
Itu sahaja, sekarang import fungsi daripada fail dan jalankannya.
rreeeeAtas ialah kandungan terperinci Membungkus C/C++ ke dalam Python menggunakan SWIG. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!