Python3调用C程序(超详解)

本文详细介绍了Python3如何调用C程序,包括使用CTypes模块和Python/C API方法。重点讲解了CTypes的简单应用,以及在创建C动态链接库时遇到的问题和解决方案。此外,还提到了Python/C API的使用,需要编写特定格式的C代码以供Python调用,并给出了相关示例。
摘要由CSDN通过智能技术生成

Python3调用C程序(超详解)

Python为什么要调用C?

1.要提高代码的运算速度,C比Python快50倍以上

2.对于C语言里很多传统类库,不想用Python重写,想对从内存到文件接口这样的底层资源进行访问

Python调用C的方法:

Python调用C的方法通常有3种:

1.SWIG,编写一个额外的接口文件来作为SWIG(终端工具)的入口

2.通过CTypes调用

3.使用Python/C API方法

第一种方法大多数情况下会带来不必要的麻烦,我并没有试验,本文只针对2,3方法作详细说明

通过CTypes调用:

Python中的ctypes模块可能是Python调用C方法中最简单的一种。ctypes模块提供了和C语言兼容的数据类型和函数来加载dll文件,因此在调用时不需对源文件做任何的修改。也正是如此奠定了这种方法的简单性。

下面是python文件的代码:

from ctypes import *	#pip ctypes库,并导入库
test = CDLL("./test.dll")	#调用当前目录下叫test的dll文件,dll文件是C生成的动态链接库
result =test.sum(5,10)	#调用库里的函数sum,求和函数
print(result)	#打印结果

接下来用C语言编写dll动态链接库,这里使用VS:

file
file

单击头文件,新建项:

file

添加源文件:

file

在头文件test.h中加入如下代码:

#pragma once

#ifdef BUILD_TEST
#define API_SYMBOL __declspec(dllexport)
#else
#define API_SYMBOL __declspec(dllimport)
#endif
//宏定义,导出或者导入//

extern "C" API_SYMBOL int sum(int x, int y)
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值