c++调用python

1、下载boost1.52,http://www.boost.org/,解压文件到d:\boost\boost_1_52_0;

2、下载python2.7.3,http://www.python.org/;(boost1.4支持到python2.5)

3、安装python,我安装在了D:\Python25,设置环境变量PATH D:\Python25;

4、开始->程序->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio 命令提示(2010),打开一个控制台

5、在控制台依次输入下面3行:

cd d:\boost\boost_1_49_0
bootstrap.bat
bjam stage –toolset=msvc-9.0 –with-python –stagedir=”D:\boost_1_49_0\bin\vc9” link=static runtime-link=shared runtime-link=static threading=multi debug release

6、项目属性中配置如下
链接器里的附加库目录加入,python/libs(python的安装目录中),boost/vs2010/lib(生成的boost的目录中)

c/c++的附加库目录加入,boost(boost的下载目录),python/include(python的安装目录)

1、确认工程中项目属性中配置如下
链接器里的附加库目录加入,python/libs(python的安装目录中),boost/vs2010/lib(生成的boost的目录中)
c/c++的附加库目录加入,boost(boost的下载目录),python/include(python的安装目录)

2、如果使用的是boost.python的静态库:在属性->预处理器->预处理器定义添加BOOST_PYTHON_STATIC_LIB,否则编译的为动态,会提示找不到python_boost*.lib什么的

c++程序

// python_test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <boost/python.hpp>

using namespace std;
using namespace boost::python;


int _tmain(int argc, _TCHAR* argv[])
{
 Py_Initialize(); // 初始化
 object main_module = import("__main__");
 object main_namespace = main_module.attr("__dict__");

 // 执行多个python语句:创建一个hello.txt文本文件
 str Lines =
  "hello = file('hello.txt', 'w')\n"
  "hello.write('Hello world first python!')\n"
  "hello.close()";
 exec(Lines, main_namespace);

 // 执行表达式
 exec("result = 5 ** 2", main_namespace);
 // 提取并查看变量result的值
 int five_squared = extract<int>(main_namespace["result"]);
 // 查看变量result的值
 cout << "The five_squeared caculated by python is " << five_squared << endl;

 //加载sys module.
 object sys = import("sys");
 // 提取python的版本信息
 std::string version = extract<std::string>(sys.attr("version"));
 std::cout << version << std::endl;

 //要求simple.py与可执行文件在相同路径下! 运行ok
 str filename = "simple.py";
 object simple = exec_file(filename, main_namespace, main_namespace);
 object foo = main_namespace["foo"];
 int val = extract<int>(foo(5));
 cout << "Python has caculated foo as " << val << endl;
 Py_Finalize();

 cout << "My Python SUCCESS"<<endl ;
 system("pause");
 return 0;
} 

在当前目录下建立一个simple.py的Python文件,内容如下:


def foo(i = 4):  
    return i**3  

(示例程序源于网络)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值