首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
tellmenow (22)
cutemouse (22)
softj (78)
iiprogram (69)
qdzx2008 (50)
goodboy1881 (14)
wangchinaking (58)
fancyhf (1)
harrymeng (41)
yjz0065 (113)
CSDN - 文档中心 - 其他开发语言 阅读:4561   评论: 0    参与评论
标题   C++ Boost 之Python(生成一个扩展模块)     选择自 Lythm 的 Blog
关键字   Boost Python
出处   http://www.boost.org/

c++boost.gif (8819 bytes)生成一个扩展模块

Boost的Build过程,就想大家希望的那样,正在经历一些演化和改进.下面的一些事实可能会有帮助:


在Boost的子目录libs/python/build下有各种平台上的Make文件和一个Visual Studio工程. Build的目标包括:
  • 扩展模块使用的boost_python静态连接库.在各种Unix平台上库的文件是libboost_python.a. 当你使用Visual C++的时候,库文件是boost_python.lib.

  • Boost.Python库特性的一个全面的测试用例.这个测试用例先建造一个Boost.Python扩展模块, 然后运行Python来导入这个模块,接下来使用doctest对库进行一系列的测试.模块和测试用例的源代码在Boost的子目录 libs/python/test下可以找到.

  • Boost子目录libs/python/example下的各种例子程序.在这些例子中包含一个基于上面介绍的那个全面 测试用例的doctest.

Boost包含一组将boost_python库编译成静态连接版本的make文件(这些make文件支持在各种平台上同时编译,支持稳定的一组特性), 一个全面的测试用例的make文件,以及libs/python/example目录下所有例子的make文件. 这些make文件的使用方法在这里
还有专门为GNU make准备的另外一组make文件.这些make文件比上面的那些make文件要简练许多,但是可编译成的目标并没有那么完整,而且 不支持在多种平台上的同时编译.
Boost提供了一个Microsoft Visual Studio的工程文件:libs/python/build/build.dsw. 这个工程的include路径可能需要根据你的安装做一些改变.工程假设python被安装在c:\tools\python下. 这个工程对所有的目标提供了三种配置选项:
  • Release (优化, -DNDEBUG)
  • Debug (未优化 -D_DEBUG)
  • DebugPython (未优化, -D_DEBUG -DBOOST_DEBUG_PYTHON)

在Visual C++中使用-D_DEBUG选项来build扩展模块的时候.Python默认强制使用一个特殊的调试版本DLL连接. 因为Python的windows版本默认安装并不提供这个调试版本的DLL,所以Boost.Python在Python.h被Include的时候 使用boost/python/detail/wrap_python.hpp 来临时的取消_DEBUG的定义.

如果希望库的调试版本的额外的运行时检查特性可以使用,你可以加入如下定义:#define BOOST_DEBUG_PYTHON来重新激活, 并且和boost_python.lib的调试版本连接.你必须获得Python调试版本的可执行文件(python_d.exe)和DLL (python20_d.dll or python15_d.dll). Python的源程序中包含项目文件来构造这些东西. 如果你是下载的源程序,把最上层目录的名字改成src, 然后将它安装在c:\tools\python下面,这样 Boost.Python提供的项目文件不用改变就能使用了.只要打开 c:\tools\python\src\pcbuild\pcbuild.dsw,执行 "build all"就可生成debug版本.

如果你没有定义#define BOOST_DEBUG_PYTHON,确认所有的源文件使用#include<boost/python/detail/wrap_python.hpp>来代替通常的 Python.h,否则你就会碰到连接问题.


如果你使用的平台没有被直接支持,你可以使用下面的源文件生成一个静态版本的库(在Boost的子目录libs/python/src下), 或者直接编译一下然后将目标文件和你的扩展模块连接:
Next: 封装枚举 Previous: 内幕一瞥 Up: Top

© David Abrahams 2001 版权所有. 本文档允许复制、使用、修改、出售和分发,前提是这个版权声明必须出现在所有的拷贝上。本文档的提供不承担任何直接或隐含的保证,并且不做其适合任一目的之声明。

更新日期: 2001年4月17日(R.W. Grosse-Kunstleve)


相关文章
对该文的评论