前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VS2013+python+boost.

VS2013+python+boost.

作者头像
py3study
发布2020-01-03 11:18:35
7640
发布2020-01-03 11:18:35
举报
文章被收录于专栏:python3python3

环境:

win7-64位

VS2013

python-2.7.8-32位 (得用32位,这很重要) 

boost.python-1.57

步骤:

一. “安装”boost.python

    解压boost.python后,用VS的[本机命令提示工具](开始-VS2013-VS Tools)进入到boost的文件夹,运行bootstrap.bat生成bjam.exe。然后运行:

    bjam --with-python link=shared runtime-link=shared

来编译出boost.python的库。成功的话会在boost_1_57_0\stage\lib下生成4个文件。

    如果失败的话,检查一下:

  • python是否为32位,不用能64位。(我也不知道为啥)
  • 有没打错字,其实是我没遇到其他导致失败的原因,赫赫。

    解释一下bjam这里用到的参数(详细参数说明可以运行bjam --help查看):

  • --with:只编译指定的库,如输入--with-python就只编译python库了,不加的话会编译全部库得用很长时间。
  • link:(注意前面没有-)使用静态库还是动态库。
  • runtime-link:(注意前面没有-)是静态还是动态链接C/C++标准库。

    link和runtime-link都要设为shared,因为到时导出dll时得用到动态的库。

二. 使用VS2013生成dll

    用VS2013新建一个win32 dll项目(例如项目名称为boostDemo),然后设置几个项目属性:

  • C/C++-附加包含目录:${boost根目录};${python根目录}\include;。
  • C/C++-代码生成-启用最小重新生成:否。
  • C/C++-预编译头:不使用。
  • 链接器-附加库目录:${boost根目录}\stage\lib;${python根目录}\libs;

    在boostDemo.cpp中输入代码:

代码语言:javascript
复制
#include "stdafx.h"
#include <boost\python.hpp>

char const* greet()
{
	return "hello world";
}

BOOST_PYTHON_MODULE(boostDemo)
{
	using namespace boost::python;
	def("greet", greet);
}

    然后生成dll文件,将dll文件名更改为boostDemo.pyd(注意为什么是boostDemo)。

三. python调用

    将刚才生成的boostDemo.pyd和${boost根目录}\stage\lib下的boost_python-vc120-mt-gd-1_57.dll复制到python项目的根目录。

    在python项目入口源文件中输入代码:

代码语言:javascript
复制
import boostDemo
print boostDemo.greet()

    运行之,如无意外,会输出:

    >>hello world

    大功告成!下次会讲怎么导出C++类。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档