Boost
文章平均质量分 77
以boost基础使用,步步深入
道格拉斯范朋克
中间件
展开
-
libboost_pythonPY_MAJOR_VERSIONPY_MINOR_VERSION-vc141-mt-gd-x32-1_67.lib编译问题
使用boost1.6.7在vs2015下编译,遇到问题,还以为自己配置错了。原来是boost的bug,修改方式:include/boost/python/detail/config.hpp// Set the name of our library, this will get undef'ed by auto_link.hpp// once it's done with it:...原创 2019-06-17 21:18:31 · 680 阅读 · 0 评论 -
Boost.Python教程:函数
在本章中,我们将更详细地介绍Boost.Python驱动的函数。我们将看到一些工具,可以将C ++函数暴露给Python,避免潜在的pifall,例如悬空指针和引用。我们还将看到一些工具,使我们更容易公开利用C ++特性(如重载和默认参数)的C ++函数。继续阅读......但在此之前,您可能想要启动Python 2.2或更高版本并键入 >>> import th...原创 2019-04-12 11:07:37 · 569 阅读 · 0 评论 -
Boost.Python教程:类操作符/特殊功能
Python运算符C以丰富的操作符而闻名。 C ++通过允许运算符重载将其扩展到极限。 Boost.Python利用了这一点,并且可以很容易地包装C ++运算符驱动的类。考虑文件位置类FilePos和一组采用FilePos实例的运算符:class FilePos { /*...*/ };FilePos operator+(FilePos, int);FilePos ...原创 2019-04-12 10:38:37 · 345 阅读 · 0 评论 -
Boost.Python教程:类的虚函数的默认实现
我们在上一节中已经看到了如何使用Boost.Python的类包装器工具包装具有纯虚函数的类。如果我们希望改为包装非纯虚函数,那么机制就有点不同了。回想一下,在上一节中,我们用一个纯虚函数包装了一个类,然后用C ++实现它,或者从它派生的Python类。我们的基类:struct Base{ virtual int f() = 0;};有一个纯虚函数f。但是,如果其成员函...原创 2019-04-12 10:29:25 · 738 阅读 · 0 评论 -
Boost.Python教程:类的虚函数
在本节中,我们将学习如何通过虚函数使函数表现为多态。继续我们的示例,让我们向Base类添加一个虚函数:struct Base{ virtual ~Base() {} virtual int f() = 0;};Boost的目标之一。Python对现有的C ++设计的干扰最小。原则上,应该可以在不更改第三方库的情况下公开第三方库的接口。在我们的Base类中添加任何东...原创 2019-04-12 10:25:47 · 1093 阅读 · 0 评论 -
Boost.Python教程:类的继承
在前面的示例中,我们处理的是非多态的类。通常情况并非如此。大多数时候,我们将包含通过继承相关的多态类和类层次结构。我们经常需要为从抽象基类派生的类编写Boost.Python包装器。考虑这个简单的继承结构:struct Base { virtual ~Base(); };struct Derived : Base {};及在Base和Derived对象实例上运行的一组C ++函数:...原创 2019-04-10 16:02:18 · 690 阅读 · 0 评论 -
Boost.Python教程:暴露类的属性
在C ++中,具有公共数据成员的类通常不受欢迎。设计良好的类利用封装隐藏了类的数据成员。访问类数据的唯一方法是通过访问(getter / setter)函数。访问函数公开类属性。这是一个例子:struct Num{ Num(); float get() const; void set(float value); ...};但是,在Python中,属性访...原创 2019-04-10 15:36:10 · 947 阅读 · 0 评论 -
Boost.Python教程:暴露类的数据成员
数据成员也可以暴露给Python,以便可以将它们作为相应Python类的属性进行访问。我们希望公开的每个数据成员可以被视为只读或读写。考虑这个类Var:struct Var{ Var(std::string name) : name(name), value() {} std::string const name; float value;};我们的C ++...原创 2019-04-10 15:27:03 · 436 阅读 · 0 评论 -
Boost.Python教程:暴露类的构造
我们之前的示例没有任何显式构造函数。由于World被声明为普通结构,因此它具有隐式默认构造函数。 Boost.Python默认公开默认构造函数,这就是我们能够编写的原因>>> planet = hello.World()我们可能希望用非默认构造函数包装一个类。让我们以前面的例子为基础:struct World{ World(std::string m...原创 2019-04-10 15:13:21 · 700 阅读 · 0 评论 -
Boost.Python教程:暴露类
现在让我们向Python暴露一个C ++类。考虑我们要向Python暴露的C ++类/结构:struct World{ void set(std::string msg) { this->msg = msg; } std::string greet() { return msg; } std::string msg;};我们可以通过编写相应的Boo...原创 2019-04-10 14:34:01 · 447 阅读 · 0 评论 -
Boost.Python教程:重载
以下说明了手动包装重载成员函数的方案。当然,相同的技术可以应用于包装重载的非成员函数。我们这里有我们的C ++类:struct X{ bool f(int a) { return true; } bool f(int a, double b) { return true; } bool f(in...原创 2019-04-12 11:09:50 · 560 阅读 · 0 评论 -
Boost.Python教程:默认参数
Boost.Python包装(成员)函数指针。不幸的是,C ++函数指针没有默认参数信息。使用默认参数获取函数f:int f(int,double = 3.14,char const * =“hello”);但是指向函数f的指针类型没有关于其默认参数的信息:int(*g)(int,double,char const*) = f; // 默认值丢失当我们将此函数指针传递给d...原创 2019-04-12 11:24:41 · 1328 阅读 · 0 评论 -
Boost.Python教程:对象接口
Python是动态类型的,与静态类型的C ++不同。Python变量可以包含整数,浮点数,列表,字典,元组,str,long等等。从Boost.Python和C ++的角度来看,这些Pythonic变量只是类object实例。我们将在本章中看到如何处理Python对象。如前所述,Boost.Python的目标之一是在保持Python感觉的同时提供C ++和Python之间的双向映射。B...原创 2019-04-15 17:16:28 · 4408 阅读 · 0 评论 -
Boost.Python包装私有析构函数的类:boost::python::object::value_holder<Value>::~value_holder()错误
使用boost::python包装含有私有析构函数的类是行不通的。也就是说单例一般也是没办法直接包装的,当然可以曲线实现编译出错如下:boost\python\object\value_holder.hpp(134):errorC2248:“XXXCLASS::XXXCLASS”:无法访问private成员(在“XXXCLASS”类中声明),参见XXXCLASS的声明,例如:...原创 2019-05-08 19:01:09 · 498 阅读 · 0 评论 -
Boost.Python教实现分析:instance_holder.hpp
<boost/python/instance_holder.hpp> 提供了类instance_holder,它是包含包装类的C ++实例的类型的基类。Class templateinstance_holderClassintance_holder析构Classintance_holder修饰符Classintance_holder观察者instan...原创 2019-05-08 17:08:04 · 441 阅读 · 0 评论 -
BOOST_ASIO_HAS_STD_CHRONO在vs2015中使用问题
BOOST_ASIO_HAS_STD_CHRONO是指定boost库中使用c++11的std::chrono。在vs2013版本之后,编译的时候自定义了这个宏。原创 2019-04-18 12:59:57 · 551 阅读 · 0 评论 -
Boost.Python教程:导入有依赖关系的动态库
1、如果导入的动态库依赖其他的动态库,只需把直接导入的动态库的后缀改为pyd,其他依赖的动态库在环境变量path里必须能够找得到。否则经常报错;ImportError: DLL load failed: 找不到指定的模块。2、ImportError: dynamic module does not define init function,错误原因一般是导出的接口有错误,dll匹配...原创 2019-04-17 16:48:53 · 1194 阅读 · 0 评论 -
Boost.Python教程:通用技术
下面介绍一些有用的技术,您可以在使用Boost.Python包装代码时使用这些技术。创建包Python包是一组模块,为用户提供某种功能。如果您不熟悉如何创建包,Python教程中提供了对它们的一个很好的介绍。但是我们使用Boost.Python包装C ++代码。我们如何为用户提供一个漂亮的包界面?为了更好地解释一些概念,让我们使用一个例子。我们有一个有不同含义的C ++库:...原创 2019-04-15 19:03:18 · 479 阅读 · 2 评论 -
Boost.Python教程:异常传输
必须在Python代码的边界捕获所有C ++异常。这个边界是C ++遇到Python的地方。Boost.Python提供了一个默认的异常处理程序,用于转换选定的标准异常,然后放弃:raise RuntimeError, 'unidentifiable C++ Exception'用户可以提供自定义翻译。这是一个例子:struct PodBayDoorExcept...原创 2019-04-15 17:46:01 · 724 阅读 · 0 评论 -
Boost.Python教程:迭代器
在C ++中,特别是STL,我们在任何地方都看到了迭代器。Python也有迭代器,但这是两个非常不同的令人讨厌的东西。C ++迭代器:C ++有5种类型(随机访问,双向,转发,输入,输出) 有两种操作类别:重新定位,访问 需要一对迭代器来表示(第一个/最后一个)范围。Python迭代器:1类(前进) 1个操作类别(next()) 最后引发StopIteration异常典型...原创 2019-04-15 17:43:25 · 287 阅读 · 0 评论 -
BOOST_PP_CAT 宏
Boost _ pp _ cat 宏将其参数连接在展开后。使用BOOST _ PP _ CAT(a、b))参数a连接的左操作数。B连接的右操作数。备注预处理器的 token-pasting 操作符(##) 会阻止参数进行展开。本宏则允许其参数在连接之前先进行展开。连接的结果不可以引起对一个使用了BOOST_PP_CAT的宏的调用。如果发生,则BOOS...原创 2019-04-09 09:33:16 · 1019 阅读 · 0 评论 -
Boost.Python教程:嵌入,从c/c++中调用python代码
使用解释器到现在为止,您应该知道如何使用Boost.Python从Python调用C ++代码。但是,有时您可能需要反过来:从C ++端调用Python代码。这需要您将Python解释器嵌入到C ++程序中。目前,Boost.Python并不直接支持嵌入时您需要的所有内容。因此,您需要使用Python / C API填补空白。但是,Boost.Python已经使嵌入变得更加容易,...原创 2019-04-15 17:27:08 · 2804 阅读 · 0 评论 -
Boost.Python教程:建立Hello World
从开始到结束现在你要做的第一件事是构建Hello World模块并在Python中自己尝试。在本节中,我们将概述实现这一目标所需的步骤。我们将使用与每个boost发行版捆绑在一起的构建工具:bjam。 注意 建筑没有bjam 除了bjam之外,当然还有其他方法可以构建你的模块。这里写的不应该被视为“唯一的方式”。除了bjam之外,当然还有其他构建工具。...原创 2019-03-21 14:57:33 · 493 阅读 · 2 评论 -
boost中的Python开发
概要欢迎来到Boost.Python,它是一个C ++库,它实现了C ++和Python编程语言之间的无缝互操作。该库包括以下支持:参考文献和指针 全球注册类型强制 自动跨模块类型转换 高效的函数重载 C ++到Python异常翻译 默认参数 关键字参数 在C ++中操作Python对象 将C ++迭代器导出为Python迭代器 文档字符串内容教程 建筑和测试...翻译 2019-03-21 11:37:09 · 285 阅读 · 0 评论 -
Boost.Python教程:导出函数
目录快速开始建立Hello World暴露类构造函数类的数据成员类属性遗产类虚函数具有默认实现的虚函数类操作符/特殊功能功能呼叫政策超载默认参数自动重载对象接口基本界面派生对象类型提取C ++对象枚举从PyObject*创建boost::python::object嵌入使用解释器迭代器例外...原创 2019-03-21 14:08:28 · 839 阅读 · 0 评论 -
Boost.Aiso教程 1
教程基本技能第一节中的教程程序介绍使用aiso工具包所需的基本概念。在陷入复杂的网络编程世界之前,这些教程程序说明使用简单的异步定时器的基本技能。Timer.1-同步使用计时器此教程程序显示如何执行阻塞等待计时器上,介绍了aiso。//// timer.cpp// ~~~~~~~~~//// Copyright (c) 2003-2017 Christo原创 2017-05-07 13:47:40 · 451 阅读 · 0 评论 -
所有的 Boost 库文档的索引
入门 工具 网站 新闻 社区 常见问题 更多的信息按字母顺序列出的库按类别列出的库算法破碎的编译器的解决方法并发编程容器正确性和测试数据结构特定于域的函数对象和高阶编程泛型编程图像处理输入/输出跨语言支持迭代器语言功能仿真数学和数字内存解析模式和习语预处理器元编程编程接口状态机字符串和文本处理系统原创 2017-04-20 23:22:27 · 2730 阅读 · 0 评论 -
Boost---在Windows上的入门(2)
4 使用 Boost建立一个简单的程序为简单起见,让我们开始使用仅有头文件的库。下面的程序从标准输入中读取一个整数序列,使用 Boost.Lambda,每个数字乘以三,和将它们写到标准输出︰#include #include #include #include int main(){ using namespace boost::lambda;原创 2017-04-16 23:07:29 · 1702 阅读 · 1 评论 -
Boost的编译
表的内容1、介绍2、构建过程3、基本任务4、项目管理5、最佳实践6、规则参考7、功能参考介绍编译器和平台构建系统提振。构建是一个高级构建系统,使其尽可能容易管理c++项目。的想法是指定配置文件一样需要构建一个程序。例如它不需要告诉提振。构建如何使用特定的编译器。提振。构建支持许多编译器开箱即用的,知道如何使用它们。如果原创 2016-06-21 17:15:01 · 2525 阅读 · 0 评论 -
Boost---在Windows上的入门(1)
欢迎欢迎来到 Boost 库 !你已经完成了本教程的时候,你会至少有点熟悉的 Boost 发行内容以及如何去使用它。这里是什么本文档旨在是极其温柔的介绍,所以我们包括相当数量的可能已经非常熟悉你的材料。为简单起见,我们也留下中级和高级用户可能会想一些的信息。在本文档末尾,我们会请您到可以帮助你追求这些主题进一步的资源。正文前书页我们使用一个排版约定可能不会立即明原创 2017-04-16 22:14:42 · 630 阅读 · 1 评论 -
Boost的helloworld
参见安装编译:http://blog.csdn.net/xinqingwuji/article/details/51728725博主的库目录为E:\boost_1_61_0\stage\lib,头文件目录为E:\boost_1_61_0测试时包含#includeboost\thread.hpp>后,编译提示fatal error LNK1104: 无法打开文件“libboost_th原创 2016-06-22 21:49:15 · 1160 阅读 · 0 评论 -
Asio 技术学习
官网:http://think-async.com/原创 2016-06-13 16:43:08 · 3531 阅读 · 1 评论 -
Boost.Asio翻译文档
实战出精华在具体的C++网络编程中提升你的逼格John TorjoBoost.Asio C++ 网络编程Copyright © 2013 Packt Publishing关于作者做为一名权威的C++专家,John Torjo 的编程生涯已经超过了15年,在这15年中,除了偶尔用 C# 和 Java 写程序,他大部分时间都在研究 C++。转载 2016-06-13 18:03:43 · 1280 阅读 · 0 评论 -
boost 1.56.0 编译及使用
boost的编译和使用,经过搜集资料和总结,记录成文。感谢文后所列参考资料的作者。1 下载地址:http://sourceforge.net/projects/boost/files/boost/1.56.0/可以选择 boost_1_56_0.7z 下载。2 编译2.1 生成boost的自用的编译工具bjam.exe解压后,使用VS2013编译。首先打开“VS2013 开转载 2016-06-21 17:15:22 · 606 阅读 · 0 评论 -
Boost.Aiso教程 2
Timer.2-以异步方式使用计时器#include iostream>#include boost/asio.hpp>#include boost/date_time/posix_time/posix_time.hpp>void print(const boost::system::error_code& /*e*/){ std::cout "Hello, world!"原创 2017-05-07 14:06:47 · 386 阅读 · 0 评论 -
Boost.Aiso教程 3
Timer.3-将参数绑定到处理程序#include iostream>#include boost/asio.hpp>#include boost/bind.hpp>#include boost/date_time/posix_time/posix_time.hpp>void print(const boost::system::error_code& /*e*/, boo原创 2017-05-07 14:13:02 · 323 阅读 · 0 评论 -
Boost.Aiso教程 5-同步多线程程序中的处理程序
Timer.5-同步多线程程序中的处理程序#include "stdafx.h"#include #include #include #include #include class printer{public: printer(boost::asio::io_service& io) : strand_(io),原创 2017-05-07 14:30:25 · 411 阅读 · 0 评论 -
boost::static_pointer_cast实现分析
template<class T, class U> shared_ptr<T> static_pointer_cast( shared_ptr<U> const & r ) BOOST_NOEXCEPT{ (void) static_cast< T* >( static_cast< U* >( 0 ) ); ...原创 2018-02-08 13:30:46 · 963 阅读 · 0 评论 -
Boost.Interprocess.file_mapping内存映射文件
什么是内存映射文件?文件映射是文件内容与进程地址空间的一部分的关联。系统创建一个文件映射关联文件和进程的地址空间。映射区域是进程用来访问文件内容的地址空间的一部分。一个文件映射可以有多个映射区域,以便用户可以将文件的各个部分与进程的地址空间关联起来,而不必将整个文件映射到地址空间中,因为文件可以大于整个地址空间过程(通常的32位系统中的9GB DVD映像文件)。使用指针读取和写入文件的过程就像动态...原创 2018-02-08 20:13:12 · 2816 阅读 · 1 评论 -
Boost.Thread
Boost.Thread允许在可移植的C ++代码中使用共享数据的多个执行线程。它提供了用于管理线程本身的类和函数,以及用于在线程之间同步数据或为单独线程提供单独数据副本的其他类。原创 2017-12-25 20:48:30 · 1171 阅读 · 1 评论