c++和python有联系吗_Python和C++交互

关键字:Python 2.7,VS 2010,swig

OS:Win8.1 with update。

1.下载swig:http://www.swig.org/download.html

2.将swig的路径添加到环境变量Path,例如set path=C:\swigwin-3.0.2。

3.用VS创建一个win32 console application名为MyApp并生成解决方案,编译生成MyApp.exe。

111701186716537.jpg

4.在MyApp解决方案里面新建一个win32 dll带导出符号项目名为MyDll,编译生成MyDll.dll。

111701337969390.jpg

5.在MyApp解决方案里面新建一个win32 dll空项目名为MyPython。

111705424053677.jpg

6.修改项目依赖关系。MyApp依赖于MyDll,MyPython依赖于MyDll。

7.修改CMyDll类的实现如下:

MyDll.h

#pragma once#include

using namespacestd;

#ifdef MYDLL_EXPORTS#define MYDLL_API __declspec(dllexport)

#else

#define MYDLL_API __declspec(dllimport)

#endif

//This class is exported from the MyDll.dll

classMYDLL_API CMyDll {public:

CMyDll(void);virtual ~CMyDll() {}string SayHello(stringname);double add(double i, doublej);virtual stringlocation();

};

MyDll.cpp

#include "stdafx.h"#include"MyDll.h"CMyDll::CMyDll()

{return;

}string CMyDll::SayHello(stringname)

{return "Hello" + name + ". I'm from" + location() + ".";

}double CMyDll::add(double i, doublej)

{return i +j;

}stringCMyDll::location()

{return "C++";

}

8.在MyPython项目里添加接口文件MyPython.i。

%module(directors="1") MyPython

%{

#include "../MyDll/MyDll.h"

%}

%feature("director") CMyDll;

%include

%include

%include "../MyDll/MyDll.h"

9.在MyPython.i的属性设置里面设置Custom Build Tool。

111705075939706.jpg

10.编译MyPython.i生成MyPython.py和MyPython_wrap.cxx,把MyPython_wrap.cxx添加到工程MyPython,并设置工程如下,Build工程MyPython生成_MyPython.pyd.

111702352802209.jpg

111703234832300.jpg

111703466551248.jpg

111704123122451.jpg

11.添加TestMyPython.py如下,在_MyPython.pyd的文件夹目录下运行TestMyPython.py.

importMyPythonimportos

o=MyPython.CMyDll()print(o.SayHello("World"))classMyPyDll(MyPython.CMyDll):def __init__(self):

MyPython.CMyDll.__init__(self)deflocation(self):return "Python"o1=MyPyDll();print(o1.SayHello("World"))

os.system("pause")

运行结果如下:

Hello World. I'm from C++.

Hello World. I'm from Python.

Press any key to continue . . .

12.Run python in MyApp。

修改MyApp的工程属性,添加python头文件的文件夹,和lib文件的文件夹。

修改MyApp.cpp的代码如下:

#include "stdafx.h"#include

int _tmain(int argc, _TCHAR*argv[])

{

Py_Initialize();

PyObject* pModule = PyImport_ImportModule("TestMyPython");

Py_Finalize();return 0;

}

编译运行MyApp.exe,结果如下:

Hello World. I'm from C++.

Hello World. I'm from Python.

Press any key to continue . . .

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html播放切片,[Html/Css]网页切片

简介这篇文章主要介绍了[Html/Css]网页切片以及相关的经验技巧,文章约2269字,浏览量461,点赞数4,值得参考!网页切片 前端必须掌握的技能,切片,虽然说难也不难,简单也确实是挺简单的&…

设计模式学习总结(一)——设计原则与UML统一建模语言

目录 一、概要1.1、设计模式定义1.2、设计模式分类1.3、设计模式书籍二、UML统一建模语言2.1、UML分类2.2、类图2.2.1、关联2.2.2、聚合/组合2.2.3、依赖2.2.4、泛化(继承)三、设计原则2.1、单一职责原则(SRP)2.2、开闭原则&#…

计算机与生命科学专业排名,2019软科世界一流学科排名发布,54个专业TOP10牛校榜单全给你...

原标题:2019软科世界一流学科排名发布,54个专业TOP10牛校榜单全给你软科26日正式发布2019“软科世界一流学科排名”(Shanghai Rankings Global Ranking of Academic Subjects)。2019年排名覆盖54个学科,涉及理学、工学、生命科学、医学和社会…

python入门心得_一天入门 Python 的一些心得

1. 前言 好久没写文了。最近在搞一些好玩的技术用到了 Python 。我原以为要花些时日,谁知道第一天入门之后便没有再刻意地去学习它了。这里就写写其中的一些关键点吧。如果我去学一门语言不是因为它火了而是我用到它了。曾经闲着没事干的时候把 Kotlin 、Vue、React…

太原计算机专业专科大学排名,太原【计算机学校】排名

太原【计算机学校】排名,资助政策1、根据国家助学金管理办法相关规定:凡被我校正式录取并注册学籍的学生在校期间均可以享受国家**费补助1900元/年,享受三年。创新科技中等专业学校排名, 有45个本科专业,16个专科专业, 3个专业硕士…

python中正则表达式的默认匹配方式为_Python模式匹配与正则表达式

1.1 不用正则表达式来匹配文本 假设我希望在一个字符串中找到电话号码,电话号码的格式为三个数字,一个短横线,四个数字,一个短横线,四个数字 比如:131-3310-5293和132-2670-9864 def IsTruePhoneNumber(con…

计算机网络应用是学什么类型的,计算机网路中服务类型及应用

服务(service)这个极普通的术语在计算机网络中无疑是一个极重要的概念。在网络体系结构中,服务就是网络中各层向其相邻上层提供的一组操作,是相邻两层之间的界面。由于网络分层结构中的单向依赖关系,使得网络中相邻层之间的界面也是单向性的&…

oschina git服务, 如何生成并部署ssh key

1.如何生成ssh公钥 你可以按如下命令来生成 sshkey: ssh-keygen -t rsa -C "xxxxxxxxxx.com" # Generating public/private rsa key pair... # 三次回车即可生成 ssh key 查看你的 public key,并把他添加到码云(Gitee.com) SSH k…

需求调研报告模板_2020年工业软管行业深度市场调研及投资策略建议报告-液体化学品增加对其需求...

(原标题:液体化学品市场规模增加 对工业软管需求量变大)工业软管,又称为工业胶管。主要用于各行业各设备作软体连接的一种软管。相比民用软管,工业作业环境更复杂、更恶劣、设备对输送管的要求也更苛刻,因此…

计算机基础理论知识的论文,计算机基础毕业论文

计算机基础毕业论文随着科学技术的不断发展,计算机也开始人类在正常生活当中所应用的一个高新的技术。下面是小编整理的计算机基础毕业论文,欢迎来参考!摘要:大学进行计算机教学能够对学生的创新能力进行培养,还能够使…

hyperledger fabric_鼎诚鬼才|超级账本入门(四):HYPERLEDGER 权限管理

权限管理权限管理机制是 hyperledger fabric 项目的一大特色。下面给出使用权限管理的一个应用案例。启动集群首先现在相关镜像。$ docker pull yeasy/hyperledger:latest $ docker tag yeasy/hyperledger:latest hyperledger/fabric-baseimage:latest $ docker pull yeasy/hyp…

Python基础检测:20171105

第一周的预习结束了 效果并不理想,最后的检测也是有个别同学表现还可以.最后一次检测,除了依旧不是放在一个文件里,文件也没有标注作者从而导致我没办法一一回复外,有些问题写的不好意外.基本没什么毛病,摔! 本次问题是以小故事的形式展开并串联的,并没有什么特殊的意思.本人不…

python爬音乐网站_用 Python 爬取 QQ 音乐全部歌曲

前景介绍 最近小伙伴们听歌的兴趣大涨,网抑云综合症已经遍布各地。 咱们再来抬高一波QQ音乐的热度吧。 土豪充绿钻 和 刷永久绿钻的除外(me) 爬它 目标:https://y.qq.com/portal/singer_list.html 任务:将A到Z的歌手以及全部页数的歌存到本地…

8.String、StringBuffer、enum枚举

1.字符串相关类 1)string类代表不可变的字符系列。 2)stringBuffer,Buffer就是缓冲区,代表的是可变的字符系列。 这可变和不可变的是怎么理解呢? 如图,不是a的字符系列改变了,只是 开辟了一份新的内存,然后重新把a指向…

nacos启动_nacos微服务注册中心

nacos主要可作为微服务架构中 动态服务发现、服务配置、服务元数据及流量管理快速使用方法:(k8s集群内)1.下载包,并解压放到服务器,准备用dockerfile打包镜像FROM 192.168.0.200:5000/hifm-nacos:2.0.0 ADD startup.sh…

esp8266原理图_ESP32/ESP8266使用MicroPython控制DHT11/DHT22

背景知识视频教程高级ESP32 - 国外课栈​viadean.com使用NodeMCU(由ESP8266支持),MicroPython和PyCharm进行物联网 - 国外课栈​viadean.com适用于使用ESP32/ESP8266的所有人的MicroPython(入门) - 国外课栈​viadean.…

如何将word中的对象怎么显示到工具栏_职场必备!Word实用技巧最全总结(五)...

1、 用目录快速定位目录通常是长文档不可缺少的部分,有了目录,阅读者就能很容易地知道文档中有什么内容,如何查找这些内容。下面介绍使用内部标题样式创建目录的方法:1、单击要建立目录的地方,通常是文档的最前面&…

html博客源码_5分钟搭建私人Java博客系统——Tale

本文适合刚学习完 Java 语言基础的人群,跟着本文可了解和运行 Tale 项目。示例均在 Windows 操作系统下演示本文作者:HelloGitHub-秦人HelloGitHub 推出的《讲解开源项目》[1]系列,今天给大家带来一款基于 Java 语言的轻量级博客开源项目——…

17秋 软件工程 团队第五次作业 Alpha Scrum2

17秋 软件工程 团队第五次作业 Alpha Scrum2 今日完成的任务 杰麟:Java后端的学习;世强:登录和注册接口编写;港晨:完成数据库表的设计;树民、陈翔:完成超级管理员后端框架。其余成员外出比赛。 …

运行返回签名不正确_如果调用约定不匹配,会发生什么?

蝎子信不信由你,调用约定不匹配是程序经常出问题的原因之一。当你的程序代码中出现不相匹配的调动约定的时候,编译器会”大吼大叫”,但是懒惰的程序员只会在其中进行强制转换,以使编译器”尽快闭嘴”。结果是:Windows不…