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判断两个对象相等的原理
Dec 12 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
Jan 31 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
Apr 28 Python
python3.6的venv模块使用详解
Aug 01 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
Oct 23 Python
Python编程flask使用页面模版的方法
Dec 28 Python
python使用matplotlib画柱状图、散点图
Mar 18 Python
Jupyter Notebook远程登录及密码设置操作
Apr 10 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
Apr 21 Python
详解Django配置JWT认证方式
May 09 Python
Python判断远程服务器上Excel文件是否被人打开的方法
Jul 13 Python
python用opencv 图像傅里叶变换
Jan 04 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
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
PHP+Tidy-完美的XHTML纠错+过滤
2007/04/10 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
2014/06/26 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
子页向父页传值示例
2013/11/27 Javascript
JavaScript数据结构和算法之二叉树详解
2015/02/11 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
2017/12/06 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
Vue 中 filter 与 computed 的区别与用法解析
2019/11/21 Javascript
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
Python splitlines使用技巧
2008/09/06 Python
Python实现多行注释的另类方法
2014/08/22 Python
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
没编程基础可以学python吗
2020/06/17 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
欧洲第一中国智能手机和平板电脑网上商店:CECT-SHOP
2018/01/08 全球购物
加拿大领先家居家具网上购物:Aosom.ca
2020/05/27 全球购物
冰淇淋店的创业计划书
2014/02/07 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
员工年终考核评语
2014/12/31 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
一行代码python实现文件共享服务器
2021/04/22 Python
如何用JavaScript学习算法复杂度
2021/04/30 Javascript