Python 调用VC++的动态链接库(DLL)


Posted in Python onSeptember 06, 2008

1. 首先VC++的DLL的导出函数定义成标准C的导出函数:

#ifdef LRDLLTEST_EXPORTS 
#define LRDLLTEST_API __declspec(dllexport) 
#else 
#define LRDLLTEST_API __declspec(dllimport) 
#endif extern "C" LRDLLTEST_API int Sum(int a , int b); 
extern "C" LRDLLTEST_API void GetString(char* pChar); 
//a + b 
LRDLLTEST_API int Sum(int a , int b) 
{ 
return a + b; 
} 
//Get a string 
LRDLLTEST_API void GetString(char* pChar) 
{ 
strcpy(pChar, "Hello DLL"); 
}

2. Python中调用如下:

from ctypes import * fileName="LRDllTest.dll" 
func=cdll.LoadLibrary(fileName) 
str = create_string_buffer(20) 
n = func.Sum(2, 3) 
func.GetString(str) 
print n 
print str.raw

关于C语言中的一些参数类型详见:http://www.python.org/doc/2.5/lib/node454.html

3. 输出结果:
5
Hello DLL

Python 相关文章推荐
linux系统使用python获取内存使用信息脚本分享
Jan 15 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
python Flask 装饰器顺序问题解决
Aug 08 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
Python登录系统界面实现详解
Jun 25 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
pycharm实现在虚拟环境中引入别人的项目
Mar 09 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
Mar 13 Python
Python学习工具jupyter notebook安装及用法解析
Oct 23 Python
python爬虫scrapy基本使用超详细教程
Feb 20 Python
python基于selenium爬取斗鱼弹幕
Feb 20 Python
Python自动化实战之接口请求的实现
May 30 Python
Python urlopen 使用小示例
Sep 06 #Python
Python 网络编程起步(Socket发送消息)
Sep 06 #Python
Python  __getattr__与__setattr__使用方法
Sep 06 #Python
Python 深入理解yield
Sep 06 #Python
Python 初始化多维数组代码
Sep 06 #Python
Python enumerate遍历数组示例应用
Sep 06 #Python
Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
Sep 06 #Python
You might like
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
CI框架的安全性分析
2016/05/18 PHP
php获取flash尺寸详细数据的方法
2016/11/12 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
加载 Javascript 最佳实践
2011/10/30 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
2015/08/05 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
SVG实现时钟效果
2018/07/17 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
Python删除windows垃圾文件的方法
2015/07/14 Python
在Python的Django框架中编写编译函数
2015/07/20 Python
Python3中的真除和Floor除法用法分析
2016/03/16 Python
Python贪吃蛇游戏编写代码
2020/10/26 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
Django crontab定时任务模块操作方法解析
2020/09/10 Python
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
关于毕业的广播稿
2014/01/10 职场文书
公司出纳岗位职责
2015/03/31 职场文书
法定代表人资格证明书
2015/06/18 职场文书
股东出资协议书
2016/03/21 职场文书
JavaScript原型链详解
2021/11/07 Javascript
Python之matplotlib绘制饼图
2022/04/13 Python