使用vs2008来扩展python的C库
1、首先创建一个DLL项目、注意要从win32的控制台那里创建、然后在弹出的窗口那里选DLL和空项目、就新建了一个空项目DLL了
2、然后莪们写一个最简单的hello world库来供python来调用、下面是C代码
#include <boost/python/module.hpp> #include <boost/python/def.hpp> char const* greet() { return "hello, world"; } BOOST_PYTHON_MODULE(hello_ext) { using namespace boost::python; def("greet", greet); }
这里用到了BOOST库的python包、boost库真是个超级大的库文件、光是源文件就已经是几十M了、如果编译起来的话肯定就是几G了、这里莪们使用编译好的boost库、本着用到什么库就下载什么库、迩可以去sourcefore下载这些编译好的库文件http://sourceforge.net/projects/boost/files/boost-binaries/
在这里莪使用1.40的版本、下载的对应文件是boost_python-vc90-mt-1_40.zip、vc90对应的是vs2008所使用的版本、mt表示是多线程的版本、一般正式都用这个、另外那些加了sd等字母的这里都不用下载、s表示静态链接库、d表示debug版本、有了库文件、还需要boost的头文件、就在刚刚给的那个路径就有了、比如是1.40版本的、就下载boost_1_40_headers.zip、 然后把头文件和库文件都解压好、再在vs2008中引用、工具->选项-》项目和解决方案-》VC++目录、在包含文件引入头文件目录、在库文件引入库文件目录、这样就把boost.python环境搭好了、此外、还需要安装好python、在网上下个python版本、假定安装了python、把python根目录下的include引入进包含文件、把libs引入进库文件、至此编译环境就搭建好了
然后把版本设置为Release、右键项目文件、属性——》配置管理器-》活动解决方案配置、选择为Release、然后按照上面的代码输入到新建的cpp文件中、里面实现了一个greet函数、此函数相当的无聊、就打印hello world、注意接下来的BOOST_PYTHON_MODULE(hello_ext)、这里就是python的模组名、以后要在python导入模组的话就是此名字、然后就可以按F5生成了DLL文件了、找到dll文件、将之扩展名改为pyd、然后移至python根目录的\Lib\site-packages目录中、注意、此pyd文件的文件名必须与模组名保持一至、还有把boost库文件中解压出来的dll文件也要一并移入这个site-packages目录中、
现在万事大吉了、只要打开python、import hello_ext就可以引入模块了、hello_ext.greet()、哈哈无聊的hello world出现了