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  __getattr__与__setattr__使用方法
Sep 06 Python
wxpython学习笔记(推荐查看)
Jun 09 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 Python
PyTorch搭建多项式回归模型(三)
May 22 Python
Python如何调用JS文件中的函数
Aug 16 Python
TensorFlow MNIST手写数据集的实现方法
Feb 05 Python
python实现手势识别的示例(入门)
Apr 15 Python
pyinstaller将含有多个py文件的python程序做成exe
Apr 29 Python
Python用类实现扑克牌发牌的示例代码
Jun 01 Python
关于Python3爬虫利器Appium的安装步骤
Jul 29 Python
python3.7.3版本和django2.2.3版本是否可以兼容
Sep 01 Python
python安装cx_Oracle和wxPython的方法
Sep 14 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封装的字符串加密解密函数
2015/12/18 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
jQuery操作DOM之获取表单控件的值
2015/01/23 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
2016/08/06 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
自己动手封装一个React Native多级联动
2018/09/19 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
js/jQuery实现全选效果
2019/06/17 jQuery
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
利用Python开发微信支付的注意事项
2016/08/19 Python
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
python使用tornado实现简单爬虫
2018/07/28 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
2020/06/01 HTML / CSS
美国第二大团购网站:LivingSocial
2016/07/24 全球购物
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
理工大学毕业生自荐信
2013/11/01 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
2015羊年春节慰问信
2015/02/14 职场文书
热血教师观后感
2015/06/10 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
导游词之白茶谷九龙峡
2019/10/23 职场文书
python周期任务调度工具Schedule使用详解
2021/11/23 Python