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中执行shell命令的几个方法小结
Sep 18 Python
Python实现中文数字转换为阿拉伯数字的方法示例
May 26 Python
解决python升级引起的pip执行错误的问题
Jun 12 Python
python3 unicode列表转换为中文的实例
Oct 26 Python
详解python statistics模块及函数用法
Oct 27 Python
python实现画循环圆
Nov 23 Python
python统计字符的个数代码实例
Feb 07 Python
python中adb有什么功能
Jun 07 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
Nov 17 Python
浅析Python的命名空间与作用域
Nov 25 Python
python 通过exifread读取照片信息
Dec 24 Python
解决Python保存文件名太长OSError: [Errno 36] File name too long
May 11 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为什么选mysql作为数据库? Mysql 创建用户方法
2007/07/02 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
PHP实现微信小程序用户授权的工具类示例
2019/03/05 PHP
JavaScript Prototype对象
2009/01/07 Javascript
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
jQuery实现HTML表格单元格的合并功能
2016/04/06 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
Webpack中publicPath路径问题详解
2018/05/03 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
JS中准确判断变量类型的方法
2020/06/01 Javascript
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
python标准日志模块logging的使用方法
2013/11/01 Python
详解Python编程中time模块的使用
2015/11/20 Python
python获取服务器响应cookie的实例
2018/12/28 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
Python 生成一个从0到n个数字的列表4种方法小结
2019/11/28 Python
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
2013/03/30 面试题
医生实习工作总结的自我评价
2013/09/27 职场文书
元旦晚会邀请函
2014/01/27 职场文书
优秀教师获奖感言
2014/01/31 职场文书
物流专员岗位职责
2014/02/17 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
弘扬雷锋精神演讲稿
2014/05/10 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python