python调用c++静态库_VS2013+python+boost.python 实现python调用c++方法

环境:

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中输入代码:

#include "stdafx.h"

#include 

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项目入口源文件中输入代码:

import boostDemo

print boostDemo.greet()

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

>>hello world

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值