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实现rest请求api示例
Apr 22 Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
Django 路由控制的实现代码
Nov 08 Python
python实现比较类的两个instance(对象)是否相等的方法分析
Jun 26 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 Python
Python imutils 填充图片周边为黑色的实现
Jan 19 Python
TensorFlow实现批量归一化操作的示例
Apr 22 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
Sep 14 Python
Python如何telnet到网络设备
Feb 18 Python
Python实现归一化算法详情
Mar 18 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
Terran魔法科技
2020/03/14 星际争霸
牡丹941资料
2021/03/01 无线电
php中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
PHP中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
PHP连接MySQL数据库并以json格式输出
2018/05/21 PHP
PHP实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
2011/09/20 Javascript
jquery 年会抽奖程序
2011/12/22 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
Angularjs为ng-click事件传递参数
2017/06/15 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
详解刷新页面vuex数据不消失和不跳转页面的解决
2018/01/30 Javascript
使用node.js实现微信小程序实时聊天功能
2018/08/13 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
python绘制简单折线图代码示例
2017/12/19 Python
Python实现八皇后问题示例代码
2018/12/09 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
详解CSS3媒体查询响应式布局bootstrap 框架原理实战(推荐)
2020/11/16 HTML / CSS
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
澳大利亚家具商店:Freedom
2020/12/17 全球购物
公务员的自我鉴定
2013/10/26 职场文书
公路施工安全责任书
2015/05/08 职场文书
家庭贫困证明
2015/06/16 职场文书
Python 统计序列中元素的出现频度
2022/04/26 Python
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript