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写的windows服务不能启动的问题
Apr 15 Python
python实现跨文件全局变量的方法
Jul 07 Python
Python中属性和描述符的正确使用
Aug 23 Python
Python中字典和集合学习小结
Jul 07 Python
python递归实现快速排序
Aug 18 Python
Python连接Redis的基本配置方法
Sep 13 Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 Python
python框架flask表单实现详解
Nov 04 Python
在Django中自定义filter并在template中的使用详解
May 19 Python
容易被忽略的Python内置类型
Sep 03 Python
Python实现自动装机功能案例分析
Oct 22 Python
python反编译教程之2048小游戏实例
Mar 03 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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
PHP的基本常识小结
2013/07/05 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
PHP strripos函数用法总结
2019/02/11 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
JS中Location使用详解
2015/05/12 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
js实现登录拖拽窗口
2020/02/10 Javascript
python简单的函数定义和用法实例
2015/05/07 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
python将回车作为输入内容的实例
2018/06/23 Python
对python中大文件的导入与导出方法详解
2018/12/28 Python
opencv与numpy的图像基本操作
2019/03/08 Python
python实现接口并发测试脚本
2019/06/25 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
写演讲稿要注意的六件事
2014/01/14 职场文书
超市创意活动方案
2014/08/15 职场文书
认真学习保证书
2015/02/26 职场文书
暑假安全保证书
2015/02/28 职场文书
借款民事起诉状范文
2015/05/19 职场文书
教育读书笔记
2015/07/02 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书