boost::python开发环境搭建
本来想用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 ; 没搞明白linkruntime-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头文件不需要加,但是不知道是不是我这个源文件不需要
页:
[1]