当前位置: 首页 > 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.jsqmd.com/news/68518/

相关文章:

  • 不锈钢风机公司TOP1!不锈钢风机哪个品牌好?
  • 2025年最新拖车平台推荐,这5家服务好、口碑佳!,拖车推荐排行聚焦优质品牌综合实力排行
  • 精选国内真空上料机行业五大标杆企业推荐,华成机械市场口碑佳
  • 查询CVE与CWE的关联信息
  • 2025年昆明AI软件搜索广告结果推送排行榜,优质广告结果服
  • 2025年工业热水锅炉制造厂排名推荐,看看哪家售后服务好
  • 2025英国留学中介留学机构
  • 2025年河南轨道平车五大品牌排名:河南冠杰轨道搬运车、无轨
  • 2025英国留学中介哪个比较优秀
  • 2025英国留学中介怎么选
  • 12.9
  • 2025最好的英国留学中介机构有哪些
  • 2025护墙板厂商top10年度盘点:十大品牌材料、工艺、环保、服务等维度深度解析,行业数据,市场口碑及选择指南
  • TDOA算法MATLAB实现:到达时间差定位
  • 2025英国留学中介费用一览表
  • 2025英国留学中介机构排名
  • 2025英国留学中介哪个比较好
  • 珠海爱尔眼科医院联系方式: 就诊预约流程与信息准备须知
  • 2025年度中国矿用开关柜服务商排名TOP5,看哪家品质好
  • 2025年五大专业伺服驱动器厂家推荐,国产伺服驱动器品牌测评
  • 2025英国留学中介排名
  • 2025年中国废菌包自动化处理设备十大实力厂家推荐:看哪家品
  • 2025英国留学中介前十名
  • 2025年安阳地区实力强的抖音运营推广企业推荐,看哪家服务优
  • 珠海爱尔眼科医院电话 联系方式: 就诊前准备与咨询指南
  • 珠海爱尔眼科医院电话: 咨询前准备与常见问题梳理
  • 2025英国高端留学中介前十名
  • 2025英国留学中介哪家靠谱
  • 2025最好的英国留学中介机构排名
  • 2025最好的英国留学中介机构排名