使用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出现了

posted @ 2012-07-12 16:30  klobodnf  阅读(747)  评论(0编辑  收藏  举报