boost python 使用

这两天在用boost python 给服务器搭建一个脚本层,在搭建的过程的过程中,遇到了几个问题。在此记录下,以免以后忘记。

使用:boost_1_51_0  python-2.7.3.msi

1.版本问题。刚开始下载的python 3.2,后来发现程序始终在exec_file出错。折腾了好久,网上查了不少资料,还是没解决,于是换成python-2.7.3后,顺利通过。

不明白为什么。。。

2.编译boost_python-vc90-mt-gd-1_51.dll文件。首先要把project-config.jam里的配置更改下,添加以下几句话,using python 
: 2.7
: c:\\Python27
: c:\\Python27\\include
: c:\\Python27\\libs
;

然后在CMD下用以下命令 bjam --with-python --prefix=d:\boost stage toolset=msvc-10.0 variant=debug link=shared address-model=64 threading=multi runtime-link=shared install

查考:http://www.linuxidc.com/Linux/2011-09/43698.htm

3.C++调用python。

先初始化

Py_Initialize();
char buff[256];
memset(buff,0,256);
::GetCurrentDirectory(256,buff);

char path[256];
memset(path,0,256);


sprintf(path,"%s%s",buff,"\\script\\main.py");


m_Main_module = import("__main__");
m_Main_namespace = (m_Main_module).attr("__dict__");
m_Module = exec_file(path,m_Main_namespace, m_Main_namespace);
object func=(m_Main_namespace)["LoadScriptInfo"];


func();


调用:

object func=(m_Main_namespace)["LoadScriptInfo"];
return  extract<int>(func());


删掉:

Py_Finalize();


4.python 调用C++ 。需单独新建一个.dll工程,把编译后的文件后缀改为.pyd,把生成的.pyd文件和前面生成的boost_python-vc90-mt-gd-1_51.dll拷贝到python目录下的DLLs里。 注意:用 BOOST_PYTHON_MODULE(模块名)初始化模块时,模块名必须等于工程名,否则无法生成正确的.dll初始化函数。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值