时隔一年,C++加python 的混合编程(包括python无环境发布)

2023-05-16

时隔一年,上一篇文档比较LOW一点,实现了python2.7的混合编译,可发布无PYTHON环境的机器。发布也是比较LOW,文件特别大。

 

 

编译版本:python 3.7.2(用来编译混合编程的)

发布版本python-3.7.2.post1-embed-win32这个版本用来发布的,因为我们安装的版本实在是太大了。(这个方法也不是最优的,网上还有更优化的,我觉得差不多了能接受了,没有过分优化了)

 

C++ :  VS2015

 

1、创建C++控制台程序

 

C++设置属性页

 

设置输入LIB

 

这个网上的例子还是蛮多的。

 

2 写入代码

C++代码

void Hello()

{

Py_Initialize();//调用Py_Initialize()进行初始化

//Py_SetPythonHome(L"F:\\ocrNew\\ocrDll\\testPython\\Debug");

PyObject * pModule = NULL;

PyObject * pFunc = NULL;

 

pModule = PyImport_ImportModule("testAdd");//调用的Python文件名

cout << pModule;

pFunc = PyObject_GetAttrString(pModule, "Hello");//调用的函数名

PyEval_CallObject(pFunc, NULL);//调用函数,NULL表示参数为空

Py_Finalize();//调用Py_Finalize,和Py_Initialize相对应的.

}

 

int main()

{

 

Hello();

//save_Add();

 

system("pause");

 

    return 0;

}

 

Python代码

 

def Hello():

    print("sfsfsfs")

 

def Add(a, b):

return a + b

 

注意这个python 代码是没有导入任何库文件的。把PYTHON文件和运行程序放到一起。

 

 

 

 

重点是打包的部分

 

基础: print HelloWorld,没有任何其他库文件

 

比较简单粗暴的方法,是把PYTHON的安装目录下的Lib文件夹和DLLs夹以及python**.dll(**代表版本)拷贝到运行目录下,缺点发布的文件太大。

 

 

 

推荐方法:

在官网https://www.python.org/downloads/windows/下载对应版本的embeddable zip file,解压出来改目录名为DLLs,将DLLs目录放在Py_SetPythonHome设置的路径,将解压目录里的python**.dll与python**.zip复制到程序所在目录下。

 

还有更优化的版本:我是最没用再追求:https://blog.csdn.net/wgxh05/article/details/81740696

 

那么如果导入库又采用推荐的方法,我们要怎么做?

 

Python代码

import cv2

def Hello():

    print("sfsfsfs")

 

def Add(a, b):

return a + b

 

 

 

 

 

将安装包里对应的库找到后拷贝到python37.zip里面

 

 

 

如果还觉得大怎么办呢?

 

Pyinstaller打包库,可以用pyinstaller的库。打包完成后可以用里面编译好的cv的.pyd文件,只有原来库的一半大小。

 

 

将这个文件拷贝到python37.zip压缩包内。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时隔一年,C++加python 的混合编程(包括python无环境发布) 的相关文章

随机推荐

  • vmware ubuntu 虚拟机分辨率问题

    起因 xff1a vmware15安装的ubuntu 18 04虚拟机 xff0c 发现更换完5 0 0 23版本内核后 xff0c 虚拟机分辨率被限制在1176 885 且虚拟机内始终无法调大 xff0c 原本以为是内核或者ubuntu的
  • 随机数发生器 rand()函数使用方法

    给出完整程序代码以供参考 xff1a include lt bits stdc 43 43 h gt using namespace std typedef long long LL define INF 0x3f3f3f3f define
  • word中插入一页横向页面

    参考 xff1a https zhidao baidu com question 7650080 html 有时需要在竖版的页面中插入一个横向页面的大表格 大图片等 xff0c 不能直接修改纸张方向 xff0c 因为在Word中 xff0c
  • 手动控制DELL服务器风扇转速

    参考 xff1a https www cnblogs com dreamdale p 13187452 html https www cnblogs com lothar p 13321205 html https www cnblogs
  • 通过windows日志查看器查看系统登陆日志

    起因 xff1a 回到工位发现自己电脑没锁屏 xff0c 突然想找到查看windows登录记录的方法 参考 xff1a http www cflab net News 1522379153901 https blog csdn net C
  • hackrf+portapack 组装上手体验记录

    1 物理安装 拧下SMA天线接头 用portapack提供的黄色翘片撬开hackrf盖子 插接两块板子 装好螺丝和sma天线接头的垫片和螺母即可 2 更新固件 装好后需要更新固件 xff0c 否则portapack插好电后只闪一下 xff0
  • ios平台Ahorro记账APP换新机无法下载问题

    起因 xff1a 更换iphone新机后 xff0c 原有记账APP Ahorro在app store中已不再提供 xff0c 无法下载 解决方法 xff1a 前提 xff1a 原有手机仍在手上 xff0c 且原有手机中的Ahorro AP
  • Microsoft Print to PDF的纸张大小问题

    问题 尚未解决 在word打印选项页面设置纸张大小为信纸 xff0c 在 打印机属性 gt 高级 中也设置纸张规格为信纸 但是导出的PDF文档大小依然是A4 猜想原因 在打印机的可用纸张选项中只有A4 xff0c 且未找到添加纸张类型的方法
  • KDE下安装Fcitx

    sudo apt get install fcitx pinyin im switch im switch s fcitx z all ALL 修改 etc X11 xinit xinput d fcitx xff0c 为 xff1a XI
  • win10 vs2015 tesseract5.0

    https www cnblogs com hupeng1234 p 8545371 html
  • python 买卖提的菜单_03

    temp 61 input 34 你要买几根 xff1f n 34 mount 61 int temp print type temp Totalprice 61 20 mount print 39 您一共需要支付 xff1a 39 43
  • python 02

    import turtle as t 39 39 39 t speed 0 t screensize 600 500 屏幕大小 t pensize 5 t pencolor 34 black 34 t fillcolor 34 black
  • 取字符串某个特定字符后的字符串 strchr函数

    strchr函数返回指定字符串中从左到右第一个指定字符的指针 xff0c 未找到则返回NULL 函数原型 xff1a extern char strchr char str char character 例如 xff1a 字符串s为 11
  • 折腾了好久这个opencv的Windows库

    折腾了好久这个opencv的Windows库 xff0c 实在是想吐血了 终于找到一个可以用的已经编译好的 xff0c 下载地址如下 xff1a https github com huihut OpenCV MinGW Build 来自 x
  • ch10_列表 字典 例子

    num 61 num len 61 0 for i in range 100 if i gt 1 temp 61 0 for j in range 2 int i 2 if i j 61 61 0 temp 43 61 1 if temp
  • C# AForge设置摄像头参数(含代码)

    网上有很多c 设置摄像头参数的例子 xff0c 代码给的不多 增加新类的源码 xff1a AForge设置摄像头参数实例源码 源码地址 xff1a https download csdn net download gigizhongyan
  • QT 开发多窗口多页面问题(一)中文乱码的问题

    开发环境 xff1a Microsoft Visual C 43 43 2019 43 QT 5 13 1 QT5 中文乱码 xff0c 网上有很多例子 效果有但是没有那么彻底 因为我需要使用tr 后续中文需要翻译 最后在 h文件中加入了
  • QT 开发多窗口多页面问题(二)QT 插件模式

    编译环境 xff1a VS2019 43 QT5 13 1 业务要求 xff1a 界面是多窗口拖动的模式 xff0c 窗口采用插件的模式 xff08 DLL xff09 封装 参考的文档 xff1a 结合两个文档 结合了vs的QDesign
  • QT项目适配libmodbus3.1.6库源码

    想要自己开发的可以参考 xff1a https blog csdn net qq 37887537 article details 88548358 https blog csdn net zgrjkflmkyc article detai
  • 时隔一年,C++加python 的混合编程(包括python无环境发布)

    时隔一年 xff0c 上一篇文档比较LOW一点 xff0c 实现了python2 7的混合编译 xff0c 可发布无PYTHON环境的机器 发布也是比较LOW xff0c 文件特别大 编译版本 xff1a python 3 7 2 xff0