zoukankan      html  css  js  c++  java
  • 使用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出现了

  • 相关阅读:
    语句
    1101 事务存储引擎触发器函数
    1029 作业
    1029 数据库表以及行的基本操作
    1023 笔记
    1022 作业
    1022 笔记
    1021 笔记
    查看pip已经安装过的包
    查看Python支持的.whl文件版本
  • 原文地址:https://www.cnblogs.com/klobohyz/p/2588356.html
Copyright © 2011-2022 走看看