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实现批量获取指定文件夹下的所有文件的厂商信息
Sep 28 Python
Python栈类实例分析
Jun 15 Python
Python制作爬虫抓取美女图
Jan 20 Python
python入门基础之用户输入与模块初认识
Nov 14 Python
Python3.6正式版新特性预览
Dec 15 Python
Python Flask-web表单使用详解
Nov 18 Python
redis之django-redis的简单缓存使用
Jun 07 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
python matplotlib.pyplot.plot()参数用法
Apr 14 Python
解决Python Matplotlib绘图数据点位置错乱问题
May 16 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 Python
Python实现照片卡通化
Dec 06 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跨时区(UTC时间)应用解决方案
2013/01/11 PHP
关于PHP session 存储方式的详细介绍
2013/06/25 PHP
php简单实现MVC
2015/02/05 PHP
php防止用户重复提交表单
2015/11/02 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
javascript中对对层的控制
2006/12/29 Javascript
Javascript的匿名函数小结
2009/12/31 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
2013/08/09 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
Python实现Youku视频批量下载功能
2017/03/14 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
python中的for循环
2018/09/28 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
pandas针对excel处理的实现
2021/01/15 Python
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
机电工程专业应届生求职信
2013/10/03 职场文书
施工安全生产承诺书
2014/05/23 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
2014年平安夜寄语
2014/12/08 职场文书
党性分析材料格式
2014/12/19 职场文书
环保宣传语大全
2015/07/13 职场文书