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 文件管理实例详解
Nov 10 Python
Odoo中如何生成唯一不重复的序列号详解
Feb 10 Python
浅谈Python小波分析库Pywavelets的一点使用心得
Jul 09 Python
详解使用python绘制混淆矩阵(confusion_matrix)
Jul 14 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
Nov 08 Python
python 中值滤波,椒盐去噪,图片增强实例
Dec 18 Python
python 解决print数组/矩阵无法完整输出的问题
Feb 19 Python
python实现凯撒密码、凯撒加解密算法
Jun 11 Python
Python3 requests模块如何模仿浏览器及代理
Jun 15 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
Jun 28 Python
AI:如何训练机器学习的模型
Apr 16 Python
Django中的JWT身份验证的实现
May 07 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的Laravel框架中的event事件操作
2016/03/21 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
html文本框提示效果的示例代码
2014/06/28 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
javascript如何写热点图
2015/12/08 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
jQuery实现可拖动进度条实例代码
2017/06/21 jQuery
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
在Vue里如何把网页的数据导出到Excel的方法
2020/09/30 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
Pytorch之parameters的使用
2019/12/31 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
用HTML5的canvas实现一个炫酷时钟效果
2016/05/20 HTML / CSS
技校教师求职简历的自我评价
2013/10/20 职场文书
北京奥运会口号
2014/06/21 职场文书
高效课堂标语
2014/06/26 职场文书
村班子对照检查材料
2014/08/18 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
加强作风建设心得体会
2014/10/22 职场文书
2015年党风廉政建设个人总结
2015/08/18 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
高中英语教学反思范文
2016/03/02 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
mysql 索引合并的使用
2021/08/30 MySQL