swig | 编写c/c++ 扩展到Python的接口示例程序 | 利用distutils生成动态库(三)
【摘要】
现有程序 example.c
/* File : example.c */
double My_variable = 3.0;
/* Compute factorial of n */
int f...
- 现有程序 example.c
/* File : example.c */
double My_variable = 3.0;
/* Compute factorial of n */
int fact(int n) {
if (n <= 1)
return 1;
else
return n*fact(n-1);
}
/* Compute n mod m */
int my_mod(int n, int m) {
return(n % m);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 现有程序 example.i
/* File : 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);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
swig -python example.i
- 1
- 此时,IPython 中 import example 报错如下
利用distutils生成动态库
vim Test.py
import example
print(example.fact(4))
print('墨理')
print(example.fact(8))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
vim setup.py
from distutils.core import setup, Extension
module_name = 'example'
example_module = Extension('_example',
sources=['example.c','example_wrap.c'],
)
setup(
name = 'moli',
version = '1.0',
description = 'molisansheng',
py_modules = ['Test'],
ext_modules = [example_module],
)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
使用如下命令开始构建
python setup.py build_ext --inplace
- 1
输出大致如下:
running build_ext
building '_example' extension
creating build
creating build/temp.linux-x86_64-3.6
...
- 1
- 2
- 3
- 4
- 5
生成效果如下
python Test.py 执行测试
python Test.py
24
40320
- 1
- 2
- 3
- 4
- 5
文章来源: positive.blog.csdn.net,作者:墨理学AI,版权归原作者所有,如需转载,请联系作者。
原文链接:positive.blog.csdn.net/article/details/115307782
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)