Windows系统Python直接调用C++ DLL的方法


Posted in Python onAugust 01, 2019

环境:Window 10,VS 2019, Python 2.7.12, 64bit

1,打开 VS 2019,新建C++ Windows 动态链接库工程 Example,加入下列文件,如果Python是64位的则在VS中 Solution platforms 选择 x64 编译成64位的 DLL;

Example.h

#pragma once
#ifndef CPP_EXPORTS
#define CPP_EXPORTS
#endif
#ifdef CPP_EXPORTS
#define CPP_API _declspec(dllexport)
#else 
#define CPP_API _declspec(dllimport)
#endif
#include <iostream>
using namespace std;
#ifdef __cplusplus
extern "C"
{
#endif
  CPP_API int __cdecl getInt();
  CPP_API const char* __cdecl getString();
  CPP_API void __cdecl setString(const char* str);
#ifdef __cplusplus
}
#endif

Example.cpp

#include "pch.h"
#include "Example.h"
CPP_API int __cdecl getInt()
{
  return 5;
}
CPP_API const char* __cdecl getString()
{
  return "hello";
}
CPP_API void __cdecl setString(const char* str)
{
  cout << str << endl;
}

编译,得到 Example.dll

2, 打开 Command,cd 到 Example.dll 所在目录,输入 Python2,进入python环境

>>> from ctypes import *
>>> dll = CDLL("Example.dll")
>>> print dll.getInt()
5
>>> getStr = dll.getString
>>> getStr.restype = c_char_p
>>> pChar = getStr()
>>> print c_char_p(pChar).value
hello
>>> setStr = dll.setString
>>> setStr.argtypes = [c_char_p]
>>> pStr = create_string_buffer("hello")
>>> setStr(pStr)
hello
-1043503984

总结

以上所述是小编给大家介绍的Windows系统Python直接调用C++ DLL的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
apache部署python程序出现503错误的解决方法
Jul 24 Python
Python读csv文件去掉一列后再写入新的文件实例
Dec 28 Python
Python常见工厂函数用法示例
Mar 21 Python
利用Python进行数据可视化常见的9种方法!超实用!
Jul 11 Python
python获取微信小程序手机号并绑定遇到的坑
Nov 19 Python
Python OpenCV之图片缩放的实现(cv2.resize)
Jun 28 Python
Django将默认的SQLite更换为MySQL的实现
Nov 18 Python
Pytoch之torchvision.transforms图像变换实例
Dec 30 Python
Python自定义sorted排序实现方法详解
Sep 18 Python
python 如何引入协程和原理分析
Nov 30 Python
Python绘制数码晶体管日期
Feb 19 Python
python中的装饰器该如何使用
Jun 18 Python
Python CVXOPT模块安装及使用解析
Aug 01 #Python
Python Selenium 之数据驱动测试的实现
Aug 01 #Python
Python 一键获取百度网盘提取码的方法
Aug 01 #Python
Django中的静态文件管理过程解析
Aug 01 #Python
pycharm 批量修改变量名称的方法
Aug 01 #Python
python腾讯语音合成实现过程解析
Aug 01 #Python
Python空间数据处理之GDAL读写遥感图像
Aug 01 #Python
You might like
编译问题
2006/10/09 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
this和执行上下文实现代码
2010/07/01 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
2016/06/06 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
bootstrap table服务端实现分页效果
2017/08/10 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
Python 正则表达式(转义问题)
2014/12/15 Python
python中查看变量内存地址的方法
2015/05/05 Python
Python中的fileinput模块的简单实用示例
2015/07/09 Python
Python编程scoketServer实现多线程同步实例代码
2018/01/29 Python
python计算两个地址之间的距离方法
2018/06/09 Python
Python3对称加密算法AES、DES3实例详解
2018/12/06 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
详解python itertools功能
2020/02/07 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
详解基于python的图像Gabor变换及特征提取
2020/10/26 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
HTML5单选框、复选框、下拉菜单、文本域的实现代码
2020/12/01 HTML / CSS
动态密码技术
2012/10/18 面试题
新媒传信软件测试面试题
2013/02/24 面试题
绩效工资分配方案
2014/01/18 职场文书
车辆工程专业求职信
2014/06/14 职场文书
公司试用期员工自我评价
2014/09/17 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
单位租房协议书样本
2014/10/30 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书