最近要选择开发工具来做我的一个游戏系统,最终在MFC + CPP、C# + 托管CPP + CPP、wxWidget + CPP、Python + wxPython + CPP四种解决方案中选择了最后一种,第一种是目前最常见的解决方案,因为很多现在的游戏开发者以前或多或少都用过MFC,第二种为我们目前项目所用,GB工具也使用了这个框架,非常的稳定自然,wxWidget + CPP框架则是Unreal的做法,呵呵,毫无疑问是为了跨平台,而我要另辟蹊径,使用Python + wxPython + CPP结构,目前我还没有看见任何游戏系统用这个框架,优点就是python的简洁灵活的语法,快速的BOA+wxPython界面开发,缺点就是不知道wxpython界面是否稳健,boost.python黏合CPP效率是否满足要求.不管它,做了再说.
首先要建立开发环境,下载了win32版本的python2.5.2 binaries,我暂时不想编译Python Debug版,wxPython版本win32-unicode 2.8.8.0-py25,CSDN下的,BOA版本好像是0.6.1,依次安装以上三个版本,我为了怕麻烦都安装在默认目录.完毕后运行BOA,tools菜单下设置python解释器,新建个wx.App试试,运行OK,学习就看BOA帮助,绝对通俗易懂,半天就能学会,剩下在就是boost.python,下最新的boost_1_35_0,解压到c:\,弄个bjam,有现成的下bjam.exe,自己编译没那功夫,方便起见把bjam.exe放到c:\boost_1_35_0目录下,现在我们要编译boost.python,其他库就略过了,要不然要编译个把小时(大部分的类是不需要编译的,包含头文件就可以用了。判断某组类是否需要编译,只需要查看c:\boost_1_35_0\libs\目录下相应的子目录里是否有一个build子目录,如果有,就说明需要编译).记得机器上要有MSVS 2005,然后在c:\boost_1_35_0目录下建如下批处理文件:
SET BOOST_ROOT=c:\boost_1_35_0
@REM 这里改成你自己的PYTHON目录
SET PYTHON_ROOT=c:\Python25
@REM 改成你自己的PYTHON版本
SET PYTHON_VERSION=2.5
bjam -sBOOST_ROOT=. -sTOOLS=msvc-8.0 --with-python "-sBUILD=debug release multi/single static/dynamic"
(以上方法完全适用与默认安装所有程序的朋友,其他朋友可能要设置一些环境参数,具体我就不知道了,bjam的用法请参考boost帮助文档,确实很难看,一点也不傻瓜化)
保存双击运行,一堆warning,不用管,检查下只要没有error就行,大概1分钟左右boost.python编译完毕,到c:\boost_1_35_0\bin.v2\libs\python\build\msvc-8.0\下去找编译完毕的lib和dll,默认文件名应该是boost_python-vc80-mt-gd-1_35.dll和boost_python-vc80-mt-1_35.dll,前者是DEBUG版本,现在要写个python扩展测试下是否可以用.
#include <boost/python.hpp>
#include <iostream>
#pragma comment(lib, "boost_python-vc80-mt-1_35.lib")
void show()
{
std::cout << "This is C++ Code" << std::endl;
}
BOOST_PYTHON_MODULE(PyExt)
{
boost::python::def("show", show);
}
有三点需要注意.
1:BOOST_PYTHON_MODULE(PyExt)的字符与DLL文件名要相同.
2:DLL文件后缀改成PYD.
3:boost_python-vc80-mt-1_35.lib与DLL文件名不要修正,因为在BOOST.PYTHON里用宏已经固定了,可能在bjam配置文件里可以修改那个默认名.
>>import PyExt
>>PyExt.show()
This is C++ Code
显示结果如上你就成功了!最近同事老是跟我推荐Object C与COCOA一起开发原型,稍微看了下工作流程,确实冗余很少,程序简洁,但关键是程序只能运行在MAC OS上,而且C本身冗余比较多,不过苹果的势力确实很强,苹果的思想也非常的好,彻底体现了KISS原则.简单并且人性化,而当前很多软件好像并不追求这个,而是反复强调技巧,比如BOOST我就很不喜欢他的风格,它想把一些问题简单化,但做法却不很不优雅.最近一直在追求冗余最少最人性最简单的开发工具和开发方法,始终没有我特别满意感到惊艳的.
posted @ 2008-07-31 19:51
effulgent 阅读(357)
评论(0) 编辑 收藏 网摘