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的Supervisor进行进程监控以及自动启动
May 29 Python
Python的Django框架中TEMPLATES项的设置教程
May 29 Python
在Lighttpd服务器中运行Django应用的方法
Jul 22 Python
Python中__init__.py文件的作用详解
Sep 18 Python
使用matplotlib画散点图的方法
May 25 Python
Python后台开发Django的教程详解(启动)
Apr 08 Python
pytorch中图像的数据格式实例
Feb 11 Python
python实现微信打飞机游戏
Mar 24 Python
TensorFlow2.1.0最新版本安装详细教程
Apr 08 Python
python中lower函数实现方法及用法讲解
Dec 23 Python
python基于tkinter制作m3u8视频下载工具
Apr 24 Python
基于Python编写一个监控CPU的应用系统
Jun 25 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
php递归列出所有文件和目录的代码
2008/09/10 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
2015/11/23 PHP
php ajax异步读取rss文档数据
2016/03/29 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
IE无法设置短域名下Cookie
2010/09/23 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
详解参数传递四种形式
2015/07/21 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
js评分组件使用详解
2017/06/06 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
springmvc接收jquery提交的数组数据代码分享
2017/10/28 jQuery
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
Python中index()和seek()的用法(详解)
2017/04/27 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
Django-rest-framework中过滤器的定制实例
2020/04/01 Python
python构造IP报文实例
2020/05/05 Python
恒华伟业笔试面试题
2015/02/26 面试题
青年文明号创建承诺
2014/03/31 职场文书
说明书格式及范文
2014/05/07 职场文书
停车场管理协议书范本
2014/10/08 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书
「月刊Comic Alive」2022年5月号封面公开
2022/03/21 日漫
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android