转自:http://www.cnblogs.com/gaoxing/p/4317051.html

本来想用mingw编译boost::python模块,网上看了下资料太少,只有使用vs2012

操作环境:win7 x64

python: x86

boost: 1.57

  • 编译boost::python模块

1: 开始->Microsoft Visual Studio 2012->Visual Studio Tools->VS2012开发人员命令提示  ; 因为我python是32位的,所以使用这个命令窗口

2:bootstrap.bat 编译出b2.exe

3: b2.exe --with-python  --build-type=complete     ; 没搞明白link  runtime-runk的区别所以直接这么搞

编译结果如下:

  • 创建vs工程(控制台工程)

配置工程属性。

工程默认使用动态库的 boost_python-vc110-mt-gd-1_55.lib,可以设置编译宏BOOST_PYTHON_STATIC_LIB 使用静态库:libboost_python-vc110-mt-gd-1_55.lib

该工程可以不用设置静态库的名字,估计是头文件里面设置了的

源文件

#include<iostream>

#include<boost/python.hpp>
#include<Python.h>
using namespace boost::python;
int main()
{
Py_Initialize(); // 检查初始化是否成功
if ( !Py_IsInitialized() )
{
return -1;
} PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')"); object mainModule;
object mainNamespace; try
{
mainModule = import("__main__");
mainNamespace = mainModule.attr("__dict__");
exec("import os", mainNamespace, mainNamespace);
exec("print os.getcwd()", mainNamespace, mainNamespace);
}
catch( ... )
{
if (PyErr_Occurred())
PyErr_Print();
} // 关闭Python
Py_Finalize();
system("pause");
}

最重要的地方来了

#include<boost/python.hpp> 
#include<Python.h>

两个头文件的位置一定是这样的。发现在很多c++项目中,头文件的位置不对经常引起各种问题 。该问题输出为;

1>------ 已启动生成: 项目: python, 配置: Debug Win32 ------
1> main.cpp
1>main.obj : error LNK2019: 无法解析的外部符号 __imp___Py_NegativeRefcount,该符号在函数 "public: __thiscall boost::python::api::object_base::~object_base(void)" (??1object_base@api@python@boost@@QAE@XZ) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 __imp___Py_Dealloc,该符号在函数 "public: __thiscall boost::python::api::object_base::~object_base(void)" (??1object_base@api@python@boost@@QAE@XZ) 中被引用
1>main.obj : error LNK2001: 无法解析的外部符号 __imp___Py_RefTotal
1>E:\visual studio 2012\Projects\python\Debug\python.exe : fatal error LNK1120: 3 个无法解析的外部命令
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

还好我手贱 移动了下位置

最后检测了下 Python.h头文件不需要加,但是不知道是不是我这个源文件不需要

[转]boost::python开发环境搭建的更多相关文章

  1. boost::python开发环境搭建

    本来想用mingw编译boost::python模块,网上看了下资料太少,只有使用vs2012 操作环境:win7 x64 python: x86 boost: 1.57 编译boost::pytho ...

  2. python开发环境搭建

    虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...

  3. Eclipse中Python开发环境搭建

    Eclipse中Python开发环境搭建  目 录  1.背景介绍 2.Python安装 3.插件PyDev安装 4.测试Demo演示 一.背景介绍 Eclipse是一款基于Java的可扩展开发平台. ...

  4. python学习之python开发环境搭建

    Python简介 Python是一种面向对象.解释型计算机程序设计语言.Python语法简洁而清晰,具有丰富和强大的类库等等众多的特性,这是来自百度百科的介绍,在百度百科还能看到它的更详细的介绍信息, ...

  5. eclipse python开发环境搭建

    eclipse python开发环境搭建[非原创] 1.在www.eclipse.org官网下载Eclipse Classic 4.2.2,Win7 64位下载eclipse-SDK-4.2.2-wi ...

  6. python开发环境搭建及numpy基本属性-【老鱼学numpy】

    目的 本节我们将介绍如何搭建python的开发环境以及numpy的基本属性,这样可以检验我们的numpy是否安装正确了. python开发环境的搭建 工欲善其事必先利其器,我用得比较顺手的是Intel ...

  7. Linux CentOS Python开发环境搭建教程

      CentOS安装Python 1.CentOS已经自带安装了2.x版本,先尝试python命令检查已安装的版本.如果你使用rpm.yum或deb命令安装过,请使用相对命令查询. 2.复制安装文件链 ...

  8. unbuntu16.04上python开发环境搭建建议

    unbuntu16.04上python开发环境搭建建议  2017-12-20  10:39:27 推荐列表: pycharm: 可以自行破解,但是不推荐,另外也不稳定 pydev+eclipse: ...

  9. Python开发环境搭建指导

    本文主要介绍Python开发环境的搭建.主要包括如下几部分内容: (1)Python软件的安装.注意版本的选择和安装过程中选项的勾选. (2)pip工具环境变量.镜像源的配置使用和常用镜像源介绍.pi ...

随机推荐

  1. 图论++【洛谷p1744】特价采购商品&&【一本通1342】最短路径问题

    (虽然题面不是很一样,但是其实是一个题qwq) [传送门] 算法标签: 利用Floyed的o(n3)算法: (讲白了就是暴算qwq) 从任意一条单边路径开始.所有两点之间的距离是边的权,或者无穷大,如 ...

  2. 【微信小程序开发】使用button标签的open-type="getUserInfo"引导用户去授权

    一. 前言 小程序官方文档,上面说明 > wx.getUserInfo(OBJECT) 注意:此接口有调整,使用该接口将不再出现授权弹窗,请使用 <button open-type=&qu ...

  3. Matlab:线性热传导(抛物线方程)问题

    函数文件1:real_fun.m function f=real_fun(x0,t0) f=(x0-x0^2)*exp(-t0); 函数文件2:fun.m function f=fun(x0,t0) ...

  4. python functiontools模块中的 wraps

    直接上代码看效果: # 定义一个最简单的装饰器 def user_login_data(f): def wrapper(*args, **kwargs): return f(*args, **kwar ...

  5. springcloud-Eureka-服务注册与发现核心组件

    Eureka组件 Eureka是Netfilx开源的服务发现组件,本身是一个基于rest的服务,它包含client和server两部分. Spirng Cloud将它集成在子项目Spirng Clou ...

  6. vscode extensions

    ├─ .obsolete├─ .wlck├─ .wtid├─ abeyuhang.vscode-lesslint-0.0.1├─ abusaidm.html-snippets-0.2.1├─ adam ...

  7. Python Flask框架

    Python有很多Web框架,可谓是百家争鸣,我这里列出几个比较叼的几个框架 Django      市场占有率最高,官方文档几近完美,但是适合比较大的项目,小项目会显得累赘. Tornado    ...

  8. CentOS7 linux下yum安装redis以及使用

    1.安装redis数据库 yum install redis 2.下载fedora的epel仓库 yum install epel-release 3.启动redis服务 systemctl star ...

  9. 深入理解之 Android Handler

    深入理解之 Android Handler   一,相关概念 在Android中如果通过用户界面(如button)来来启动线程,然后再线程中的执行代码将状态信息输出到用户界面(如文本框),这时候就会抛 ...

  10. 第一节课:java介绍以及java开发环境的安装

    互联网时代 什么是软件 什么是硬件 什么是操作系统 java是什么? 计算机高级程序语言 java能做什么? 开发软件(网站.app.游戏.应用系统.嵌入式) java对应的职位链(需求->产品 ...