Python3与C/C++的相互调用
Python与C/C++可以相互调用。在这一章节里,我们会分别从Linux与Windows平台通过示例的方式介绍它们之间是如何调用的。
1. Linux下Python3与C/C++的相互调用
这里我们分成两个部分:Python3调用C/C++; C/C++调用Python3.
1.1 Linux下Python3调用C/C++
(1) Python3调用C动态链接库
Python3调用C库比较简单,不需要经过任何封装打包成so,再使用python的ctypes调用即可。我们分成如下步骤:
- 编写C语言源文件并打包生成动态链接库
- Python3调用动态链接库
头文件:test.h
源文件:test.c
编译成动态链接库:
[root@localhost python_c]# gcc -o libtest.so -shared -fPIC test.c [root@localhost python_c]# ls libtest.so test.c test.h
Python3调用动态链接库:
执行程序:
[root@localhost python_c]# python3 ./python_c.py 6
(2) Python3调用C++动态链接库
Python不能直接调用C++函数,需要通过对应的包装,通过C函数的方式导出才能够被使用。
头文件:test.h
源文件:test.cpp
编译成动态链接库:
[root@localhost python_cplusplus]# gcc -o libtest.so -shared -fPIC test.cpp [root@localhost python_cplusplus]# ls libtest.so python_cplusplus.py test.cpp test.h
Python3调用动态链接库:
执行程序:
[root@localhost python_cplusplus]# python3 ./python_cplusplus.py Algorithm::add------- 104