vc调用python
首先下载python的开发包,到百度上搜pyhon msi下载,会有相关下载链接,比如http://download.csdn.net/download/w277608109/8299309。
不能下exe的执行程序,那里面没有相关的头文件,比如pyhon.h。
pyhon官网上也有这个msi的安装包,但因为服务器在国外,网速十分慢,且这个官网的界面经常会变,有时候会找不到msi的文件。所以还是在百度上搜索msi文件下载就好了,缺点就是,有时找不到最新的msi包。
下载后,安装,一路next,然后配置环境变量。
我用的开发平台是vs2013,新建一个控制台程序,
载入lib:#pragma comment(lib,"C:\\Python34\\libs\\python34.lib"),但在debug下编译,会报出找不到python34_d.lib的错误,这个要改“pyconfig.h“中的配置:
查找 if defined(_DEBUG),把下面那句改成 pragma comment(lib,"python34.lib")即可。
继续编译,会报:
无法解析的外部符号 __imp___Py_NegativeRefcount,该符号在函数 "xxx中被引用”
无法解析的外部符号__imp___Py_RefTotal,该符号在函数 "xxx中被引用”
这两个错误。这两个函数应该是在python34_d.lib中的。我们在release模式下编译就没有问题。
写个测试的demo,写个测试的函数,如下,调用的是含有python第三方库(requests)的代码
int iCallPythonModule(){
// 初始化Python
//在使用Python系统前,必须使用Py_Initialize对其
//进行初始化。它会载入Python的内建模块并添加系统路
//径到模块搜索路径中。这个函数没有返回值,检查系统
//是否初始化成功需要使用Py_IsInitialized。
int iRet = -1;
do
{
Py_Initialize();
// 检查初始化是否成功
if (!Py_IsInitialized())
{
return -1;
}
PyRun_SimpleString("import sys");
PyObject* moduleName = NULL;
moduleName = PyUnicode_DecodeFSDefault("requests");
//moduleName = PyBytes_FromString("requests"); //模块名,不是文件名//requests要先安装,否则会报没有找到requests模块的错误,且requests最好安装在python的安装目录下,我试过将requests安装在d盘,python安装在c盘,但导入requests时一直失败。后来把request包复制到python34的目录下,运行pip install 的命令安装,然后就可以正常导入了
if (!moduleName){
cout << "[ERROR] Python string is null" << endl;
iRet = -1;
}
PyObject* pModule = PyImport_Import(moduleName);
if (!pModule) // 加载模块失败
{
PyErr_Print();//这是python 自带的错误输出函数;
cout << "[ERROR] Python get module failed." << endl;
iRet = -1;
break;
}
PyRun_SimpleString("f=open('D:\\PythonScript\\RobotRecharge.py','r',encoding='gbk')");//读取绝对目录中的py脚本。这个脚本我就不贴出来了,大家自己写一个
PyRun_SimpleString("exec(f.read())");//将脚本读出后,执行这个脚本
iRet = 0;
} while (0);
Py_Finalize();
return iRet;
}
vc调用python相关推荐
- vc调用python返回值为中文的处理
1.python文件 这样的一个 tt.py 文件,内容如下: 在python环境是没有问题的如下面的图片所示 import time import os def printtest(s):with ...
- java中调用python
在Java中调用Python </h1><div class="clear"></div><div class="postBod ...
- c++调用python的代码、函数、类
一.配置python环境问题 1.首先安装Python(版本无所谓),安装的时候选的添加python路径到环境变量中 安装之后的文件夹如下所示: 2.在VS中配置环境和库 右击项目->属性-&g ...
- c调用python脚本如何获取结果_使用C++调用Python代码的方法详解
一.配置python环境问题 1.首先安装Python(版本无所谓),安装的时候选的添加python路径到环境变量中 安装之后的文件夹如下所示: 2.在VS中配置环境和库 右击项目->属性-&g ...
- C++调用Python函数
From: http://www.flatws.cn/article/program/c/2010-08-24/9677.html Python代码在实现某些功能的时候非常方便,如果能够将Python ...
- 如何将c语言程序封装供python调用_C++调用python
C++调用python 在C/C++中嵌入Python,可以使用Python提供的强大功能,通过嵌入Python可以替代动态链接库形式的接口,这样可以方便地根据需要修改脚本代码,而不用重新编译链接二进 ...
- C++调用Python脚本函数
C++调用Python脚本函数 文章目录 C++调用Python脚本函数 1.编写python脚本,并下载安装所需的库文件(保证编写的python脚本在指定的虚拟环境下可以正常运行) 2.在Vs201 ...
- vs2010调用python的方法
最近需要使用python的一些功能便捷开发C++程序,因为之前没有做过所有遇到了些麻烦.那就是如何连接python 我去网上好多人且大多说都是: 将lib和include包含到vc++目录就可以. 但 ...
- python高阶学习之一:c++调用python
python高阶学习之一:c++调用python python已经成为当今人工智能和数据分析的主流语言,掌握python就好像拿到了进入AI分析殿堂的门票一样,无论如何任何事情都要从一点一滴做起,不要 ...
最新文章
- 如何准备数学建模竞赛!
- 收藏 | 机器学习防止模型过拟合
- 难道他们说的都是真的?
- 解决Word 2007启动时弹出“无法访问您试图使用功能所在的网络位置”的问题...
- 已经无法合并还报请合并git_Git不能自动合并怎么解决?
- Eureka-eureka原理分析
- 【双100%提交】剑指 Offer 09. 用两个栈实现队列
- Socket的3次握手链接与4次断开握手
- 【Pytorch神经网络实战案例】14 构建条件变分自编码神经网络模型生成可控Fashon-MNST模拟数据
- 美团 iOS 工程 zsource 命令背后的那些事儿
- ASP.NET Core 设置允许跨域访问
- 3dmaxuv展开很多线_考研 | 最全考研复试时间线!参考价值超大!
- MySQL使用小技巧(一)——MySQL删除
- 习惯性的对自己没信心,其实没想到自己已经变强大了。
- JavaWbe中文乱码解决方案
- mongovue mysql_MongoDB 客户端 MongoVue
- bzoj 3237: [Ahoi2013]连通图 并查集+线段树分治
- ‘The client noticed that the server is not a supported distribution of Elasticsearch‘ 报错及解决办法
- Python多张图片合并成一个PDF
- 模型复现 | YOLOR入门教程