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内部