如何在Clion中使用C++调用Python代码

在很多时候,我们需要在一个c++工程项目中调用部分Python代码,这就需要我们实现Python和C++之间的交互。交互方式有两种:1. 依靠 TCP 建立的网络通信交互;2. 嵌入式混合语言编程(Embedding Code)。这里主要介绍后者,如何在CLion下使用C++调用Python模块。

(一)环境搭建

安装CLion并配置好编译环境(下载地址:https://www.jetbrains.com/clion/),下载并安装好Python环境。
在CLion中新建一个C++项目,我们要做的就是修改 CMakeList 文件中的内容:
在这里插入图片描述
添加下面两行:

# 添加 Python 的 include 目录,找到自己装 python 的目录,Python 默认安装路径在:“C:\Users\你自己的用户名\AppData\Local\Programs\Python”
include_directories(C:\\Users\\eve\\AppData\\Local\\Programs\\Python\\Python37\\include)# 添加 Python 的 lib 库,同样找到 python 安装目录下的 libs 文件夹中的 python37.lib 文件
link_libraries(C:/Users/eve/AppData/Local/Programs/Python/Python37/libs/python37.lib)

添加完成之后我们 CmakeList 就写好了,接下来我们测试一下代码,记得引入 “Python.h”:
在这里插入图片描述
运行代码后发现报错:
在这里插入图片描述
如果你遇到了同样的错误,不要着急,我们只需要修改 Python.h 中一小点代码就可以了,我们打开 Python.h 源码(在 “Python 安装目录 / include” 文件夹中),打开后我们在最开头添加一个引用:

#include "math.h"

在这里插入图片描述
保存后,再重新运行代码,发现可以正常运行了:
在这里插入图片描述

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

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

相关文章

C和指针之数组编程练习8(8皇后问题)

1、问题 *在88格的国际象棋上摆放八个皇后,使其不能互相攻击 *即任意两个皇后都不能处于同一行、同一列或同一斜线上, *问有多少种摆法,并把所有合法的二维数组打印出来 2、代码实现 #include <stdio.h> #include <stdlib.h>/***在88格的国际象棋上摆放…

.NET6之MiniAPI(二十四):用Polly重试

为了保障系统的稳定和安全&#xff0c;在调用三方服务时&#xff0c;可以增加重试和熔断。重试是调用一次失败后再试几试&#xff0c;避免下游服务一次闪断&#xff0c;就把整个链路终止&#xff1b;熔断是为了防止太多的次数的无效访问&#xff0c;导致系统不可知异常。Polly是…

android项目中单实例数据库类

一、数据库操作package com.ping.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;/** * describe <数据库操作> */p…

求职准备

昨天下班回家等车时&#xff0c;我一个知道我年底要离职的同事问我&#xff0c;你有没有开始找工作啊&#xff1f;我说还没有。她就疑惑我怎么那么淡定。事实上&#xff0c;虽然我确实并没有开始注册什么求职网站以及写简历&#xff0c;但是我的准备工作却早已开始。包括在这里…

jQuery-DOM操作之属性、class

1、属性操作 1&#xff09;、attr()--获取和设置属性 <script type"text/javascript">$(function(){var $p $(p);var p_txt $p.attr(title); //获取p元素属性title的值alert(p_txt);$(p).attr(title,love); //设置单个的属性值$(p).attr({class:love,id:fo…

CLion 中使用 C++ 版本的 OpenCV

配置环境&#xff1a; Windows 10CLion 2020OpenCV 3.4.1MinGW-w64 1. 下载 CLion 并配置好 MinGW CLion 下载地址&#xff1a;https://www.jetbrains.com/clion MinGW 安装包下载地址&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1c00uHbcf_jGeDDrVg99jtA 提取码&…

C和指针之auto和内存栈和register关键字

1、auto 在C代码中每个函数都有其生命周期(也称作用域),在函数生命周期中声明的变量通常叫做局部变量,也叫自动变量。例如: 复制代码代码如下: int chenyu(){ int a = 10; // auto int a = 10; return 0; } 整型变量a在fun函数内声明,其作用域为chenyu函数内…

如何理解 C# 中的 System.Void 类型?

咨询区 ordag我知道方法声明成 void 表示不返回什么东西&#xff0c;但我发现在 C# 中 void 不仅仅是一个关键词&#xff0c;而且还是一个真实的类型。void 是 System.Void 的别名&#xff0c;就像 int 的别名是 System.Int32 一样&#xff0c;但为什么不允许直接使用Void类型呢…

ArrayList 的实现原理

ArrayList 是List接口的可变数组的实现。实现了所有可选列表的操作&#xff0c;并包括null值在内的所有元素。此类还提供了一些方法来操作内部用来存储列表的数组大小。 ArrayList 的是实现&#xff1a; 对于ArrayList而言&#xff0c;他实现List接口、底层使用数组保存所有元…

获得手机的ip

本文转载至 http://blog.csdn.net/showhilllee/article/details/8746114 iosip手机貌似ASI里获取ip地址的链接不可以了。也曾试过whatismyip&#xff0c;在其网站上的截图获取的ip是正确的&#xff0c;单不知道为什么在我这里却是错误的。所以&#xff0c;在这里分享一下获得手…

Idea maven项目不能新建package和class的解决

如图&#xff0c;新建的maven项目不能新建package 这是因为Java是普通的文件夹&#xff0c;要设置为 现在就可以了

C和指针之数组和函数部分总结

函数和数组2个章节部分学习总结 1、之前对函数参数传递指针没有理解到位,以为像传其它的数据一样,只是数据的一份拷贝,然后不修改原始的数据,函数参数如果是传递的指针,传递给函数是指针的一份拷贝,可以通过指针间接访问数据,从而得到修改原始数据,反正不能把指针变量本…

基于文本知识库的强化学习技术——Learning to Win by Reading Manuals in a Monte-Carlo Framework

论文链接&#xff1a;http://people.csail.mit.edu/branavan/papers/acl2011.pdf 文章目录1. 背景介绍2. 将攻略文本引入值函数 Q(s,a)Q(s, a)Q(s,a) 评价2.1 复杂环境下使用传统 Q(s,a)Q(s, a)Q(s,a) 函数的缺陷2.2 设计 Q(s,a,d)Q(s, a, d)Q(s,a,d) 神经网络2.3 模型训练流程…

这是Blazor上传文件的最佳方式吗?

Blazor不得不说真是好东西&#xff0c;极大的提升了开发效率&#xff0c;很多的页面交互功能基本上只需要写很少的代码就能实现了&#xff0c;而且还是无js实现&#xff0c;你也绝对没有想到过&#xff0c;Blazor实现文件上传是有多么简单&#xff01;先说结论&#xff1a;Blaz…

iOS SQLite函数总结

1.打开数据库 int sqlite3_open( const char *filename, // 数据库的文件路径 sqlite3 **ppDb // 数据库实例 ); 2.执行任何SQL语句 int sqlite3_exec( sqlite3*, // 一个打开的数据库实例 const char *sql, …

ubuntu 下安装五笔输入法

2019独角兽企业重金招聘Python工程师标准>>> 从两年开始用五笔的吧&#xff0c;自从我学会用五笔之后&#xff0c;基本上就没有用过拼音了&#xff0c;我记忆中使用拼音也就那么几次&#xff0c;好像都是在远程协助别人的时候&#xff0c;用他们电脑上的拼音。然后我…

openstack horizon国际化分析

2019独角兽企业重金招聘Python工程师标准>>> 参考 官网国际化介绍&#xff1a;https://docs.djangoproject.com/en/1.7/topics/i18n/translation/#module-django.conf.urls.i18n Django模板&#xff08;网页多语种支持/国际化&#xff09;&#xff1a; http://blog.…

6. 堪比JMeter的.Net压测工具 - Crank 实战篇 - 收集诊断跟踪信息与如何分析瓶颈

1. 前言上面我们已经做到了接口以及场景压测&#xff0c;通过控制台输出结果&#xff0c;我们只需要将结果收集整理下来&#xff0c;最后汇总到excel上&#xff0c;此次压测报告就可以完成了&#xff0c;但收集报告也挺麻烦的&#xff0c;交给谁呢……找了一圈、没找到愿意接手…

C和指针之字符串之strlen、strcpy、 strcat、strcmp使用总结

1、常见字符串相关操作 我们知道有strlen、 strcpy、strcat、strcmp、这样一一系列函数 2、实现Demo #include <stdio.h> #include <string.h>//求字符串长度并且打印 void get_len(char *p) {int len = strlen(p);printf("%s len is %d\n", p, len); …

被AI人机疯狂单杀?王者荣耀AI“绝悟”亲测体验

文章目录&#xff08;一&#xff09; 如何评测“绝悟”的智能程度&#xff1f;&#xff08;二&#xff09;“绝悟”个体操作能力分析2.1 草丛埋伏2.2 越塔强杀2.3 技能避伤2.4 技能combo&#xff08;三&#xff09;“绝悟”团队意识能力分析3.1 团队支援3.2 团队控龙3.3 反野意…