windows下python调用so文件_Python调用windows下DLL详解 - ctypes库的使用

Python

调用

windows

DLL

详解

- ctypes

库的使用

分类:

Python 2008-10-14 19:19 17710

人阅读

评论

(12)

收藏

举报

pythondllwindowsstructurecclass

作者:童磊(

magictong

)

P

.S.

之前的排版乱掉了,这里做一下排版,顺便改一下里面的一些用词错误。

2011-08-04

python

中某些时候需要

C

做效率上的补充,在实际应用中,需要做部分数据的交互。使

python

中的

ctypes

模块可以很方便的调用

windows

dll

(也包括

linux

下的

so

等文件)

下面将详细的讲解这个模块(以

windows

平台为例子)

,当然我假设你们已经对

windows

怎么写一个

DLL

是没有问题的。

引入

ctypes

[python] view plaincopyprint?

from ctypes import *

from ctypes import *

假设你已经有了一个的

DLL

(名字是

add.dll)

,且该

DLL

有一个符合

cdecl

(这里强调调用约

定是因为,

stdcall

调用约定和

cdecl

调用约定声明的导出函数,

在使用

python

加载时使用的

加载函数是不同的,后面会有说明)调用约定的导出函数

Add

建立一个

Python

文件

DllCall.py

测试:

[python] view plaincopyprint?

from ctypes import *

dll = CDLL("add.dll")

print dll.Add(1, 102)

from ctypes import *

dll = CDLL("add.dll")

print dll.Add(1, 102)

结果:

103

上面是一个简单的例子。下面简单聊一下调用流程:

1

、加载

DLL

上面已经说过,加载的时候要根据你将要调用的函数是符合什么调用约定的。

stdcall

调用约定:两种加载方式

[python] view plaincopyprint?

Objdll = ctypes.windll.LoadLibrary("dllpath")

Objdll = ctypes.WinDLL("dllpath")

Objdll = ctypes.windll.LoadLibrary("dllpath")

Objdll = ctypes.WinDLL("dllpath")

cdecl

调用约定:也有两种加载方式

[python] view plaincopyprint?

Objdll = ctypes.cdll.LoadLibrary("dllpath")

Objdll = ctypes.CDLL("dllpath")

其实

windll

cdll

分别是

WinDLL

类和

CDll

类的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值