使用Boost.Python开发
来源:互联网 发布:迅捷网络fwr200 编辑:程序博客网 时间:2024/05/22 17:34
Python本身就内置了大量功能,但毕竟不是也不可能包罗万象,如果要实现特定扩展功能,一个办法就是用C/C++等静态语言在外部实现相应的功能,并按Python扩展规范打包为一个模块,然后在Python中import近来就可以使用了。
每个Python模块都内置三个变量:__doc__、__name__和__file__。__name__代表模块名,__file__代表模块文件名,可以用print显示出来。sys.path中存放了所有模块加载路径,模块必须放在这些目录中才能被正确import,如果要添加新的路径调用sys.path.append()函数;执行sys.exit()可以退出程序。dir()用来查看当前已经加载的模块,dir(模块名)用来查看该模块中的所有函数和成员。
现在总结我对Boost.Python开发的初步认识。
首先是编译出一份boost_python.dll,它是boost对Python模块开发规范细节的一个封装,通过它可以不用按Python的规范开发扩展模块,而按照boost.python的格式开发,相对简单多了,但运行时也多了这个动态库依赖。首先随便起个Win32动态库空项目名,然后在选项中的包含文件夹添加boost库路径,之后添加boost\libs\python\src下的所有cpp文件到项目中,头文件一个也不用添加。编译前要在预处理器中加入BOOST_PYTHON_DYNAMIC_LIB和BOOST_PYTHON_SOURCE的定义,最后生成DLL和LIB文件。
现在可以按boost规范编写Python扩展模块了,首先建立一个Win32动态库空项目,然后添加一个空cpp文件。在文件顶部先添加#include<boost/python.hpp>和usingnamespaceboost::python;两行。为了简单,先实现一个函数和一个类如下:
char const* foo()
{
}
classWorld
{
public:
};
然后在下面加入boost规范的Python模块声明:
BOOST_PYTHON_MODULE( test)
{
}
>>>import test
>>> test.foo()
'hello, world'
>>> dir(test)
['World', '__doc__', '__file__', '__name__','foo']
>>>obj = test.World()
>>> obj.set('Hello,Python!')
>>> obj.greet()
'Hello, Python!'
也可以将脚本保存为一个.py或.pyw文件,然后编译为.pyc文件,就像这样:
>>>import compiler
>>>compiler.compileFile("*.py")
得到一个*.pyc文件,可供应用程序调用执行,比如一个简单的程序:
#include<windows.h>
#include<Python.h>
int __stdcall WinMain( HINSTANCE hInstance, HINSTANCEhPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
}
- 使用Boost.Python开发
- 使用boost.python进行混合开发
- Boost.Python使用小结
- 使用Boost.Python
- boost python的使用
- boost python 使用
- boost.python 使用
- boost.python vector_indexing_suite 使用注意事项
- Boost.python 编译和使用
- python 使用Boost.python 调用c++
- C++使用boost python开发后发布程序需要注意的几点
- 用python,boost,c++进行人工智能开发
- boost------result_of的使用(Boost程序库完全开发指南)读书笔记
- boost------ref的使用(Boost程序库完全开发指南)读书笔记
- boost------bind的使用(Boost程序库完全开发指南)读书笔记
- boost------function的使用(Boost程序库完全开发指南)读书笔记
- boost------ref的使用(Boost程序库完全开发指南)读书笔记
- 使用Boost.Python构建混合系统
- 1111
- HDU - 2859 Phalanx
- File's Owner的理解
- 矩阵快速幂求递推式
- obj-c编程15[Cocoa实例01]:一个会发声的随机数生成器
- 使用Boost.Python开发
- 下载资源
- 【数论】欧拉定理
- Standardization, or mean removal and variance scaling
- /usr: 目录
- Linux设置环境变量小结
- android JUnit单元测试
- Xlight-让FTP搭建变得如此容易
- Spring就是通过工厂+反射将我们的bean放到它的容器中的