当前位置: 首页 > news >正文

cmake构建python调用C++

了解到python写界面很方便也美观,想搞个小场景,实现用python写界面调用C++程序的流程。

小场景:计算加法

1、Python 程序show.py :创建了一个 GUI 界面,让用户输入两个数字,点击"相加"按钮时,调用C++程序

2、C++ 程序addsum.cpp :接收参数,将两个参数转换为整数并相加,输出结果

3、CMakeLists.txt :构建 C++ 程序sum_res

show.py

import tkinter as tk
from tkinter import filedialog, ttk
import subprocessclass ShowAddApp:def __init__(self, root):self.root = rootself.root.title("求加法")self.root.geometry("550x200")ttk.Label(text="num a").pack(side=tk.LEFT, padx=5)self.add_enter_a = tk.StringVar()add_a = ttk.Entry(textvariable=self.add_enter_a,width=5)add_a.pack(side=tk.LEFT, padx=5, fill=tk.X, expand=True)ttk.Label(text="num b").pack(side=tk.LEFT, padx=5)self.add_enter_b = tk.StringVar()add_b = ttk.Entry(textvariable=self.add_enter_b,width=5)add_b.pack(side=tk.LEFT, padx=5, fill=tk.X, expand=True)self.browse_btn = ttk.Button(text="相加", command=self.get_add_res)self.browse_btn.pack(side=tk.LEFT, padx=5)ttk.Label(text="相加结果").pack(side=tk.LEFT, padx=5)def get_add_res(self):numA = self.add_enter_a.get()numB = self.add_enter_b.get()if not numA or not numB:tk.messagebox.showwarning("警告", "请输入A和B")returntry:result = subprocess.run(["./sum_res", numA, numB],capture_output=True,text=True,check=True)res_num = result.stdoutttk.Label(text=res_num).pack(side=tk.LEFT, padx=5)except subprocess.CalledProcessError as e:tk.messagebox.showerror("错误1",f"C++程序执行失败: {e.stderr}")except Exception as e:tk.messagebox.showerror("错误2",f"发生未知错误:{str(e)}")if __name__ == "__main__":root = tk.Tk()app = ShowAddApp(root)root.mainloop()

 

addsum.cpp

#include <iostream>
using namespace std;
int main(int argc, char* argv[]){if(argc!= 3){cerr<<"Usage argc: "<< argc <<endl;return 1;}int c = stoi(argv[1]) + stoi(argv[2]);std::string numStr = std::to_string(c);cout << numStr << endl;return 0;
}

 

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(AddSum)set(CMAKE_CXX_STANDARD 11)add_executable(sum_res addsum.cpp)

构建程序执行的命令

cmake -S . -B build

cd build && make  

复制生成文件sum_res到源文件目录

python3 show.py 

http://www.zskr.cn/news/79057.html

相关文章:

  • 精选国内真空上料机行业五大标杆企业推荐,华成机械市场口碑佳
  • 2025年昆明AI软件搜索广告结果推送排行榜,优质广告结果服
  • 2025英国留学中介留学机构
  • 12.9
  • 2025最好的英国留学中介机构有哪些
  • 2025英国留学中介机构排名
  • 2025英国留学中介哪个比较好
  • 2025英国留学中介排名
  • 2025英国留学中介前十名
  • 珠海爱尔眼科医院电话 联系方式: 就诊前准备与咨询指南
  • 2025英国留学中介哪家靠谱
  • 2025西安英国留学机构排名
  • 2025年抗静电pps滤袋厂家排行榜,看看哪家技术专业?
  • 2026博士园养发馆加盟案例精选:不同赛道创业者的成功实践
  • 电脑自动干活的秘密:影刀RPA包了所有重复活,每天省3小时 - 详解
  • 基于Gammatone滤波器的语音处理技术
  • 2025年山东出口外贸记账公司权威推荐榜单:出口外贸‌/出口外贸平台有哪些‌/出口外贸数据源头公司精选
  • 2025真空上料机源头工厂TOP5权威推荐:诚信供应商甄选指
  • Facebook外贸营销排行榜出炉,亿企邦以总分第一领衔
  • 2025年差速轮靠谱厂家五大排名:专业差速轮靠谱生产商全解析
  • oeasy教python109-Mid节奏_列表_乘法_空列表_None_打击乐音轨_动次打次
  • 2025年度推荐食用菌机械设备制造商TOP5:河南力王机械的
  • Django 通俗介绍:小白也能快速上手的 “Python Web 开发神器”
  • 权威发布:2025出口企业官网搭建服务商排行榜
  • 2025年中国海外发稿公司推荐榜单:服务不错的海外发稿品牌企
  • 2025年度稀释剂认证厂家排行榜,口碑好的稀释剂品牌供应商新
  • 2025年如何选择优质防水涂料批发商?
  • 2025年燃气灶具直销厂家权威推荐榜单:煤气炉/吸油烟机/燃气壁挂炉源头厂家精选
  • 2025年波浪板批发厂家权威推荐榜单:铝板‌/铝长城板‌/曲面板源头厂家精选
  • 非均匀线阵波达方向估计的算法