C++调用Python相关问题笔记

1.调用Python脚本中若使用第三方库,且在C++中循环调用此脚本,则Py_Initialize()和Py_Finalize()需放在循环调用之外,若放在循环中每次调用时都进行初始化和结束,则在第二次调用此脚本时会在PyImport_ImportModule()加载脚本时出现错误,无法成功加载。

此情况对于使用PyImport_ImportModule()和PyObject_GetAttrString()等方法调用脚本,import相关库写在python脚本中和纯使用PyRun_SimpleString()和字符串,并不调用python脚本文件的情况都需注意:

                                                                第一种情况

                       python                                                                        c++

                                                                第二种情况

                                

类似于在写python代码,只不过是以string类型在写,并不使用其他C++调用python的方法

2.若使用matmatplotlib.pyplot库,且将相关库文件复制到vs相关exe文件夹下后,需将python下tcl文件一同复制到相关文件下,否则会报出TclError: Can't find a usable init.tcl in the following directories:错误

                

3.C++调用python脚本函数时,需注意函数返回值类型,list([])和ndarray等不同返回类型的处理方式不同,若使用错误处理方式,则数据无法取出,此时并不报错

4.VS Release模式下,生成的exe文件若需要打包,则需在exe文件下包含python中的DLLs文件,Lib文件(Lib文件中需要有相关的第三方库,一般在site-packages文件内),pythonxx.dll(xx为python版本),若有其他需求的文件(如:tcl)也需放在exe文件下。若未放置,在本机依然可以运行,因为此时本机环境变量中有python所需的相关路径。到其他机器后,若其他机器有python环境以及所需所有库,则依然可以运行,若无python环境和所需库,则exe文件无法正常运行。

VS配置环境时所包含的相关lib(静态库)和include等文件均已在编译链接时包含在exe内部

 

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tjz_jlu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值