环境:
win10
Visual studio 2017
python3.6.5
重点:
- 知道自己python的安装路径
- python安装路径中找到libs目录,复制libs目录下python36.lib,重命名一份为python36_d.lib
流程:
在vs 项目属性中设置参数如下:
- 在VC++目录下的包含目录加入python的include目录, 在库目录中加入python的libs目录, 在链接器的输入中的附加依赖项中加入python36.lib, python36_d.lib, 网上有人加了后面那个成功了,我是都加了进来!
- python代码:
def Hello():
print("Hello")
def Add(a, b):
return a + b
- c++代码:
# include <Python.h>
using namespace std;
int main()
{
Py_Initialize(); //初始化,创建一个Python虚拟环境
if (Py_IsInitialized())
{
PyObject* pModule = NULL;
PyObject* pFunc = NULL;
pModule = PyImport_ImportModule("demo1"); //参数为Python脚本的文件名
if (pModule)
{
pFunc = PyObject_GetAttrString(pModule, "Hello"); //获取函数
PyEval_CallObject(pFunc, NULL); //执行函数
}
else
{
printf("导入Python模块失败...\n");
}
}
else
{
printf("Python环境初始化失败...\n");
}
Py_Finalize();
}
- python代码文件名字为demo1, 函数为Hello!先运行c++生成解决方案,然后把python文件放在c++编译成功的.exe文件下,可运行成功!
最后结果是能出现python文件print的内容!
以上这种方法适合本机装了python环境的, 但是对于没有python环境的不能运行,解决方法就是将python的环境一起打包出去,python安装目录下的DLLs和Lib目录复制到运行目录下也就是.sln所在的目录下,然后将python安装目录下的include和libs复制出来,将VC++目录下的包含目录,库目录,链接器那边的路径换成复制后存放的路径,就可以完成打包,在没有python环境的电脑运行!