转自:http://blog.csdn.net/wyljz/article/details/6307952

VS2010建立一个空的DLL

项目属性中配置如下 
链接器里的附加库目录加入,python/libs(python的安装目录中),boost/vs2010/lib(生成的boost的目录中)

c/c++的附加库目录加入,boost(boost的下载目录),python/include(python的安装目录)

代码文件加入引用

#include <boost/python.hpp>

生成的DLL文件,需改成和导出模块一致的名称,后缀为PYD
将此PYD文件与生成的BOOST/LIB中的boost_python-vc100-mt-1_46_1.dll 一同拷入工作目录,在此目录中新建py文件,就可以 直接 import 模块名,进行使用

示例:hello.cpp

  1. #include <iostream>
  2. using namespace std;
  3. class Hello
  4. {
  5. public:
  6. string hestr;
  7. private:
  8. string title;
  9. public:
  10. Hello(string str){this->title=str;}
  11. string get(){return this->title;}
  12. };

示例:hc.h 继承hello的子类

  1. #pragma once
  2. #include "hello.cpp"
  3. class hc:public Hello
  4. {
  5. public:
  6. hc(string str);
  7. ~hc(void);
  8. int add(int a,int b);
  9. };

hc.cpp

  1. #include "hc.h"
  2. hc::hc(string str):Hello(str)
  3. {
  4. }
  5. hc::~hc(void)
  6. {
  7. }
  8. int hc::add(int a,int b)
  9. {
  10. return a+b;
  11. }

导出的类pyhello.cpp

  1. #include "hc.h"
  2. #include <boost/python.hpp>
  3. BOOST_PYTHON_MODULE(hello_ext)
  4. {
  5. using namespace boost::python;
  6. class_<Hello>("Hello",init<std::string>())
  7. .def("get",&Hello::get)
  8. .def_readwrite("hestr",&Hello::hestr);
  9. class_<hc,bases<Hello>>("hc",init<std::string>())
  10. .def("add",&hc::add);
  11. }

python项目中调用 dll的目录包含文件:

1,boost_python-vc100-mt-1_46_1.dll

2,dll.py  调用dll的py文件

3,hello_ext.pyd  由上述c++生成的dll文件改名而成

dll.py内容:

  1. import hello_ext
  2. he=hello_ext.Hello("testdddd")
  3. print he.get()
  4. he.hestr="ggggddd"
  5. print he.hestr
  6. te=hello_ext.hc("fffff")
  7. print te.get()
  8. te.hestr="ddffg"
  9. print te.hestr
  10. print te.add(33,44)

[转]vs2010用 boost.python 编译c++类库 供python调用的更多相关文章

  1. Go 程序编译成 DLL 供 C# 调用。

    Go 程序编译成 DLL 供 C# 调用. C# 结合 Golang 开发   1. 实现方式与语法形式 基本方式:将 Go 程序编译成 DLL 供 C# 调用. 1.1 Go代码 注意:代码中 ex ...

  2. Matlab函数编译成dll供c调用

    一 编译dll 在Command Window窗口中输入mbuild -setup,然后会出现语句,是否安装编译器,选择n,因为机子上已经安装了C/C++/C#的编译器,选择VS2010.

  3. OWIN 自宿主模式WebApi项目,WebApi层作为单独类库供OWIN调用

    OWIN是Open Web Server Interface for .NET的首字母缩写,他的定义如下: OWIN在.NET Web Servers与Web Application之间定义了一套标准 ...

  4. vs2010配备boost编程环境

    vs2010配备boost编程环境 vs2010配置boost编程环境 第一步:下载boost,我下载的方法是从http://www.boost.org/上找最新的下载.名字叫boost_1_53_0 ...

  5. python 网络请求类库 requests 使用

    python 网络请求类库 requests 使用 requests是 为python封装的强大 REST 操作类库 githubhttps://github.com/kennethreitz/req ...

  6. Boost库编译安装

    一.Boost库介绍         Boost库是一个经过千锤百炼.可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一.Boost库由C++标准委员会库工作组成员发起,其 ...

  7. python安装第三方类库的方法

    1.先到官网 http://pypi.python.org/pypi/setuptools 下载setuptools.exe文件并安装 点击 ez_setup.py进入, 并将内容复制下来, 保存为本 ...

  8. 2.准备Python编译环境

    2.准备Python编译环境 2.1下载Python2.7.6.tgz.ipython1.2.1.tgz.sqlite-autoconf-3071401.tar.gz 2.2安装Python2.7.6 ...

  9. linux gcc 编译动态类库(.so)和静态类库(.a)

    linux gcc 编译动态类库(.so)和静态类库(.a) 我的编译环境 ubuntu desktop 16.04 一:测试代码 测试有3个文件:AB.h,AB.c,test.c //AB.h vo ...

随机推荐

  1. laravel StartSession中间件的实现原理

    1. 打开app\Http\Kernel.php,找到StartSession的位置.这里要说一下,middleware中的中间件是都会被执行的,但执行的顺序我不知道,还需看源码来实现 protect ...

  2. Bootstrap框架整理

    bootstrap框架的介绍 栅格系统 bootstrap框架把整个浏览器的宽度分为12列,并能适配各种屏幕的尺寸大小进行相应的匹配,达到调节页面大小的效果. 首先需要放置一个容器div,class= ...

  3. zzw原_环境变量导致date命令显示处理一例

    1.显示时间看不懂 [root@localhost ~]# date201790:02:06 CST 2.注释掉环境变量bash_profile的两行配置 [root@localhost ~]# vi ...

  4. kafka consumer 指定 offset,进行消息回溯

    kafka consumer 如何根据 offset,进行消息回溯?下面的文档给出了 demo: https://cwiki.apache.org/confluence/display/KAFKA/0 ...

  5. mysql中关于关联索引的问题——对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引?

    情况描述:在MySQL的user表中,对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引? 根据查询字段的位置不同来决定,如查询a,     a,b    a,b, ...

  6. .net Monitor产生SynchronizationLockException异常的原因

    有时在使用Monitor进行并发同步编程时,会产生SynchronizationLockException异常,抛出的异常内容是"Object synchronization method ...

  7. mybatis源码解析之环境准备

    概述 对于mybatis而言,大家一定都不陌生,我相信很多同学都跟我一样,用起来非常的熟练,但是其内部的实现原理呢,不太清楚,经常面试的时候,面试官问及这方面的知识,都只能尴尬的回答不知道,或者不清楚 ...

  8. 哈希值、HashSet、LinkedHashSet

    一.哈希值 1. 哈希值其实就是一个int数字,我们可以把哈希值看成对象的一个标识,Object中的hashCode方法,可以获取到对象的哈希值 2. Object中的hashCode方法是根据地址值 ...

  9. hadoop 设置回收站

    我的问题是:hadoop回收站为什么会保留多个过期时间的数据   我们知道hadoop的回收站是在我们删除数据后能恢复的目录,但是我们并不希望在回收站保存太久的数据,我们可以使用如下参数进行配置.   ...

  10. Unity发布WebGl注意事项

    unity 版本是5.5,不过看了2017的文档好像也是差不多,绝大部分都是根据官方文档,希望有帮助,如果有错误或者你知道更多这方面的只是,请告知下,大恩言谢. 1:对webgl发布的工程文件说明   ...