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 相关文章推荐
python实现上传样本到virustotal并查询扫描信息的方法
Oct 05 Python
Python常用的爬虫技巧总结
Mar 28 Python
python使用SMTP发送qq或sina邮件
Oct 21 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
pandas 转换成行列表进行读取与Nan处理的方法
Oct 30 Python
Python离线安装PIL 模块的方法
Jan 08 Python
python 自定义装饰器实例详解
Jul 20 Python
Linux下通过python获取本机ip方法示例
Sep 06 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
3种适用于Python的疯狂秘密武器及原因解析
Apr 29 Python
Python如何在windows环境安装pip及rarfile
Jun 15 Python
python跨文件使用全局变量的实现
Nov 17 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常用的三种设计模式汇总
2016/08/28 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
加载 Javascript 最佳实践
2011/10/30 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
iview同时验证多个表单问题总结
2018/09/29 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
JavaScript和TypeScript中的void的具体使用
2019/09/12 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python动态加载模块的3种方法
2014/11/22 Python
初步解析Python下的多进程编程
2015/04/28 Python
windows下Virtualenvwrapper安装教程
2017/12/13 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
Python基础教程之异常详解
2019/01/10 Python
python面向对象实现名片管理系统文件版
2019/04/26 Python
python3 实现的对象与json相互转换操作示例
2019/08/17 Python
Django之PopUp的具体实现方法
2019/08/31 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
Python中的Cookie模块如何使用
2020/06/04 Python
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
文明社区申报材料
2014/08/21 职场文书
师德师风主题教育活动总结
2015/05/07 职场文书
锦旗赠语
2015/06/23 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA