swig-c打包成python包

    技术2023-07-20  68

    swig:Simplified Wrapper and Interface Generator swig本质是代码生成器,为c/c++程序生成到其他语言的包装代码wrapper code,这些包装代码会利用各语言提供的c API,将C/C++中的内容暴露给相应语言。SWIG需要一个接口描述文件,包含:ANSI C函数原型声明;ANSI C变量声明;SWIG指示器(directive)相关内容。SWIG可以直接接受.h头文件作为接口描述文件,生成包装代码后,编译链接即可变成可被调用的库。 版本:3.0.0起支持c++11和c++嵌套类,4.0.0支持Doxygen(注释变文档的工具)

    安装

    官网下载源码包swig-4.0.1.tar.gz,放在/home/yourname/app/ tar zxvf *gz 进入文件夹 ./configure make make install 默认装到了/usr/local/share下,如果需要指定路径,应在configure时: ./configure --prefix=/home/yourname/projects

    实例

    example.c

    double My_variable = 3.0; int fact(int n) { if (n <= 1) return 1; else return n*fact(n-1); } int my_mod(int n, int m) { return (n % m); }

    swig接口文件,example.i

    %module example %{ /* put headers and other declarations here */ extern double My_variable; extern int fact(int); extern int my_mod(int n, int m); %} extern double My_variable; extern int fact(int); extern int my_mod(int n, int m);

    生成

    swig -python example.i gcc -c -fpic example.c example_wrap.c -I /usr/local/include/python3.6m gcc -shared example.o example_wrap.o -o _example.so

    会产生如下文件。保留.so和.py即可调用。 使用方法

    Processed: 0.010, SQL: 9