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应用程序在windows下不出现cmd窗口的办法
May 29 Python
python有证书的加密解密实现方法
Nov 19 Python
Python图形绘制操作之正弦曲线实现方法分析
Dec 25 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
May 16 Python
Pycharm之快速定位到某行快捷键的方法
Jan 20 Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 Python
Django如何简单快速实现PUT、DELETE方法
Jul 24 Python
python3 enum模块的应用实例详解
Aug 12 Python
Python基础教程(一)——Windows搭建开发Python开发环境
Jul 20 Python
python实现暗通道去雾算法的示例
Sep 27 Python
python中yield的用法详解
Jan 13 Python
Python+Selenium自动化环境搭建与操作基础详解
Mar 13 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下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
基于xcache的配置与使用详解
2013/06/18 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
2014/06/27 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
php生成与读取excel文件
2016/10/14 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
无语,javascript居然支持中文(unicode)编程!
2007/04/12 Javascript
用javascript获取textarea中的光标位置
2008/05/06 Javascript
通过正则格式化url查询字符串实现代码
2012/12/28 Javascript
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
JavaScript中创建对象的模式汇总
2016/04/19 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
JavaScript实现格式化字符串函数String.format
2016/12/16 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
kafka-python批量发送数据的实例
2018/12/27 Python
python时间日期操作方法实例小结
2020/02/06 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
自我鉴定 电子商务专业
2014/01/30 职场文书
春节联欢会主持词
2014/03/24 职场文书
一分钟演讲稿
2014/04/30 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
道歉情书大全
2015/05/12 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
Python何绘制带有背景色块的折线图
2022/04/23 Python
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript