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 相关文章推荐
Python中的各种装饰器详解
Apr 11 Python
python 线程的暂停, 恢复, 退出详解及实例
Dec 06 Python
Django REST为文件属性输出完整URL的方法
Dec 18 Python
python ddt实现数据驱动
Mar 14 Python
Python通过调用有道翻译api实现翻译功能示例
Jul 19 Python
解决python中 f.write写入中文出错的问题
Oct 31 Python
Python 进程之间共享数据(全局变量)的方法
Jul 16 Python
使用PyOpenGL绘制三维坐标系实例
Dec 24 Python
Python实现多线程下载脚本的示例代码
Apr 03 Python
关于python的缩进规则的知识点详解
Jun 22 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
Jan 29 Python
Python基础教程,Python入门教程(超详细)
Jun 24 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
WML,Apache,和 PHP 的介绍
2006/10/09 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
2017/04/19 PHP
jquery JSON的解析方式
2009/07/25 Javascript
jquery 弹出层实现代码
2009/10/30 Javascript
js 自定义的联动下拉框
2010/02/07 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
使用JavaScript实现一个小程序之99乘法表
2017/09/21 Javascript
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
vue实现动态按钮功能
2019/05/13 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
Openlayers学习之地图比例尺控件
2020/09/28 Javascript
Vue实现随机验证码功能
2020/12/29 Vue.js
[01:06]DOTA2隆重推出2016冬季勇士令状 内含上海特级锦标赛互动指南
2016/02/17 DOTA
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
Python实现App自动签到领取积分功能
2018/09/29 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
2019/01/02 Python
如何使用Python标准库进行性能测试
2019/06/25 Python
CSS3中的常用选择器使用示例整理
2016/06/13 HTML / CSS
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
当当网软件测试笔试题
2015/11/24 面试题
实习老师离校感言
2014/02/03 职场文书
班主任工作经验交流材料
2014/05/13 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
工作骂脏话检讨书
2014/10/05 职场文书
世界气象日活动总结
2015/02/27 职场文书
2015年综治宣传月活动总结
2015/03/25 职场文书
活动总结书怎么写
2015/05/11 职场文书
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL
Python图片验证码降噪和8邻域降噪
2021/08/30 Python