首先下载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相关推荐

  1. vc调用python返回值为中文的处理

    1.python文件 这样的一个 tt.py 文件,内容如下: 在python环境是没有问题的如下面的图片所示 import time import os def printtest(s):with ...

  2. java中调用python

    在Java中调用Python </h1><div class="clear"></div><div class="postBod ...

  3. c++调用python的代码、函数、类

    一.配置python环境问题 1.首先安装Python(版本无所谓),安装的时候选的添加python路径到环境变量中 安装之后的文件夹如下所示: 2.在VS中配置环境和库 右击项目->属性-&g ...

  4. c调用python脚本如何获取结果_使用C++调用Python代码的方法详解

    一.配置python环境问题 1.首先安装Python(版本无所谓),安装的时候选的添加python路径到环境变量中 安装之后的文件夹如下所示: 2.在VS中配置环境和库 右击项目->属性-&g ...

  5. C++调用Python函数

    From: http://www.flatws.cn/article/program/c/2010-08-24/9677.html Python代码在实现某些功能的时候非常方便,如果能够将Python ...

  6. 如何将c语言程序封装供python调用_C++调用python

    C++调用python 在C/C++中嵌入Python,可以使用Python提供的强大功能,通过嵌入Python可以替代动态链接库形式的接口,这样可以方便地根据需要修改脚本代码,而不用重新编译链接二进 ...

  7. C++调用Python脚本函数

    C++调用Python脚本函数 文章目录 C++调用Python脚本函数 1.编写python脚本,并下载安装所需的库文件(保证编写的python脚本在指定的虚拟环境下可以正常运行) 2.在Vs201 ...

  8. vs2010调用python的方法

    最近需要使用python的一些功能便捷开发C++程序,因为之前没有做过所有遇到了些麻烦.那就是如何连接python 我去网上好多人且大多说都是: 将lib和include包含到vc++目录就可以. 但 ...

  9. python高阶学习之一:c++调用python

    python高阶学习之一:c++调用python python已经成为当今人工智能和数据分析的主流语言,掌握python就好像拿到了进入AI分析殿堂的门票一样,无论如何任何事情都要从一点一滴做起,不要 ...

最新文章

  1. 如何准备数学建模竞赛!
  2. 收藏 | 机器学习防止模型过拟合
  3. 难道他们说的都是真的?
  4. 解决Word 2007启动时弹出“无法访问您试图使用功能所在的网络位置”的问题...
  5. 已经无法合并还报请合并git_Git不能自动合并怎么解决?
  6. Eureka-eureka原理分析
  7. 【双100%提交】剑指 Offer 09. 用两个栈实现队列
  8. Socket的3次握手链接与4次断开握手
  9. 【Pytorch神经网络实战案例】14 构建条件变分自编码神经网络模型生成可控Fashon-MNST模拟数据
  10. 美团 iOS 工程 zsource 命令背后的那些事儿
  11. ASP.NET Core 设置允许跨域访问
  12. 3dmaxuv展开很多线_考研 | 最全考研复试时间线!参考价值超大!
  13. MySQL使用小技巧(一)——MySQL删除
  14. 习惯性的对自己没信心,其实没想到自己已经变强大了。
  15. JavaWbe中文乱码解决方案
  16. mongovue mysql_MongoDB 客户端 MongoVue
  17. bzoj 3237: [Ahoi2013]连通图 并查集+线段树分治
  18. ‘The client noticed that the server is not a supported distribution of Elasticsearch‘ 报错及解决办法
  19. Python多张图片合并成一个PDF
  20. 模型复现 | YOLOR入门教程

热门文章

  1. java单数字随机抽奖特效_jquery输入数字随机抽奖特效的简单实现代码
  2. 后端思想-如何设计一个操作和管理Excel的业务模块
  3. oracle校验社会统一信用代码(菜J笔记)
  4. 第十章 SQL命令 CREATE PROCEDURE(一)
  5. chromatin loops:染色质环简介
  6. 3CDB:基于3C技术的染色质互作信息数据库
  7. SV-函数(function)
  8. 软文推广要注意这些 效果会更好
  9. 国外研发创新印刷传感器改变轮胎控制市场:成本可低至一美分
  10. osg_操作器、碰撞检测、上楼梯篇