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中if __name__ == '__main__'作用解析
Jun 29 Python
Anaconda2 5.2.0安装使用图文教程
Sep 19 Python
python批量解压zip文件的方法
Aug 20 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
Dec 19 Python
Python 简单计算要求形状面积的实例
Jan 18 Python
Python timer定时器两种常用方法解析
Jan 20 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
python传到前端的数据,双引号被转义的问题
Apr 03 Python
Python连接mysql方法及常用参数
Sep 01 Python
python如何绘制疫情图
Sep 16 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
PHP目录函数实现创建、读取目录教程实例
2011/01/13 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
PHP日期和时间函数的使用示例详解
2020/08/06 PHP
统计出现最多的字符次数的js代码
2010/12/03 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
script标签属性用type还是language
2015/01/21 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
Node.js数据库操作之连接MySQL数据库(一)
2017/03/04 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
python 实现文件的递归拷贝实现代码
2012/08/02 Python
windows下python安装pip图文教程
2018/05/25 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
Python正则表达式匹配和提取IP地址
2019/06/06 Python
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
考试作弊被抓检讨书
2014/01/10 职场文书
公司门卫工作职责
2014/06/28 职场文书
英语系本科生求职信
2014/07/15 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
调任通知
2015/04/21 职场文书
2016大学军训通讯稿
2015/11/25 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
2019年最新借条范本!
2019/07/08 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python