python如何调用c语言
来源:互联网 发布:windows高级选项菜单 编辑:程序博客网 时间:2024/05/17 06:45
python中调用C/C++
一、python中调用c函数((自己运行的)
在C调用Python模块时需要初始化Python解释器,导入模块等,但Python调用C模块却比较简单,下面还是以hello.c 和 hello.py 做一说明:
(1)编写C代码,hello.c代码很简单,只是输出“hello,world”:
#include<stdio.h>
int test()
{
printf("hello,world");
}
int test()
{
printf("hello,world");
}
(2)将编写的C代码编译成动态链接库的形式,具体命令:
gcc hello.c -fPIC -shared -o libhello.so
其中-shared代表这是动态库,-fPIC使得位置独立(如果程序本来就是独立的话会有警告,无视即可),-o指定了输出文件,改成dll后缀一样可以用。
此时在当前目录下就生成了libhello.so 的动态链接库:
(3)在hello.py中导入动态链接库,并调用C函数
这里的ctypes是Python的一个外部库,提供和C语言兼容的数据类型,以方便的调用C编译的静态库和动态库中的函数, 在此可以很肯定的说,ctypes中可定对C的数据类型进行了转换,使用时只需import ctypes ,然后导入动态库即可。
ctypes详细介绍http://www.92to.com/bangong/2016/08-08/9334057.html
import ctypes
lib = ctypes.cdll.LoadLibrary('./libhello.so')
lib.test()
lib = ctypes.cdll.LoadLibrary('./libhello.so')
lib.test()
(4)在终端下输入Python hello.py, 运行结果:
打印出hello.c中的内容, 说明Python调用C模块成功!
运行过程中出现了OSError: [WinError 193] %1 不是有效的 Win32 应用程序。然后重新安装Python(32位),之前是64位,然后问题就解决了
二、python中调用C++函数(调用动态链接库)
必须在原来的C++代码后面添加extern “C”来辅助(C则不需要,这也是与复用C代码时最大的不同点),不然Python在调用这个构建后的动态链接库时是找不到原来的方法或者函数的,说到底还都是因为当前Python的设定中只能调用C函数,而不能直接调用C++的方法。
(1)C++类文件:Test.cpp
(2)将C++代码编译成动态链接库:g++ Test.cpp -fPIC -shared -o libTest.so
(3)Python调用动态库的文件:Test.py
阅读全文
0 0
- python如何调用c语言
- Python如何调用C语言接口
- Python调用C语言之如何调用动态链接库
- Python--调用C语言
- Python调用c语言
- 如何在python中调用C语言代码
- Python调用C语言函数
- Python调用C语言函数
- Python调用C语言函数
- C语言调用python代码
- Python调用C语言函数
- C语言调用python程序
- Python调用C语言代码
- python 调用 C语言 方法
- C语言调用PYTHON脚本
- C语言不能调用Python
- Python 调用 C 语言 so
- C语言中调用python
- 数据挖掘参考资源
- 利用物理信息技术提高现代中医的定位
- Word转pdf文件使用技巧:怎么安装虚拟pdf打印机
- mybatis 详解(九)------ 一级缓存、二级缓存
- Maven笔记
- python如何调用c语言
- jQuery多图片上传同时带预览
- 51nod 1179 最大的公约数
- 51Nod(1627)
- Hibernate 5;org.hibernate.MappingException: Unknown entity: com.my.model.User
- django基础知识
- SVM分类器的实现(包括交叉验证选择参数,Dlib,可视化)
- 【机器学习入门】Andrew NG《Machine Learning》课程笔记之二 :基本概念、代价函数、梯度下降和线性回归
- C++退出函数exit