您的位置:首页 > 编程语言 > Python开发

boost python 使用

2012-09-24 13:46 120 查看
这两天在用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初始化函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: