【Python】python调用C程序

本文介绍了动态链接库DLL和静态链接库Lib的区别,并以Windows为例详细阐述了DLL的工作原理。同时,展示了如何在Python中利用ctypes直接调用C编译的动态库,实现Python调用C库的功能。
摘要由CSDN通过智能技术生成

区分:动态链接库DLL与静态链接库Lib

动态链接库(Dynamic Link Library,DLL)

是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。

Windows下动态链接库的扩展名是dll,Linux下是so,Mac OS X下是dylib

它和可执行文件(exe)非常类似,区别在于DLL中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。

如果一个应用程序使用了动态链接库,Win32系统保证内存中只有DLL的一份复制品,这是通过内存映射文件实现的。DLL首先被调入Win32系统的全局堆栈,然后映射到调用这个DLL的进程地址空间。在Win32系统中,每个进程拥有自己的32位线性地址空间,如果一个DLL被多个进程调用,每个进程都会收到该DLL的一份映像。

静态链接库(static link library,Lib)

是在编译的链接期间使用的,他里面其实就是源文件的函数实现。

Lib库有两种,一种就是常见的普通Lib(static Lib),还有一种大家经常下载的开源代码编译后,会产生Lib和dll,其中Lib只是Dll的附带品,是DLL导出的函数列表文件而已,暂且称之为Dynamic Lib。

两者都是二进制文件,两者都是在链接是调用的,使用static lib的exe可直接运行,使用dynamic lib的exe需要对应的dll才能运行。

python调用C库

http://blog.csdn.net/taiyang1987912/article/details/44779719

不经过任何封装打包成so,再使用python的ctypes调用即可。

(1)C语言文件:pycall.c

[html]  view plain
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值