草庐IT

boost-msm

全部标签

c++ - 无法在 Boost.Python 中使用 __stdcall 编译示例

我正在尝试使用Boost.Python在Python中包装一个函数,但在使用__stdcall时我遇到了问题。这是一个例子:#defineBOOST_PYTHON_STATIC_LIB#defineBOOST_PYTHON_ENABLE_STDCALL#include#includevoid__stdcallf(void){return;}usingnamespaceboost::python;BOOST_PYTHON_MODULE(MyPyDLL){def("func",f);}当我尝试编译时,我遇到了100多个类似的错误,但前两个是:errorC2780:'boost::mpl::

c++ - Boost::bind 一个带有 boost::function 参数的方法

我想为async_write提供一个额外的boost::function。我希望首先调用连接自己的HandleWrite函数,然后调用提供的boost::function。绑定(bind)asioasync_write的Connection成员方法voidConnection::HandleWrite(constboost::system::error_code&e,boost::functionhandler){//Coderemovedforclarityif(!handler.empty())handler(e);};尝试将HandleWrite绑定(bind)到asioasyn

c++ boost asio超时以阻止连接

我有一个C++boost客户端,它执行阻塞连接并在收到响应后处理消息。我面临一个奇怪的问题。tcp::resolver::queryquery(tcp::v6(),this->host,port,tcp::resolver::query::v4_mapped);iterator=resolver.resolve(query);socket=newtcp::socket(io_service);socket->connect(*iterator);我试图连接到一台ping6无法访问的机器(但启用了IPV6)。尽管如此,我在尝试解决第2行中的查询时没有收到任何错误。因此,在给出错误之前尝试

c++ - 使用 Boost Python 创建和访问 frozenset

我有一些C++方法有std::set作为参数或返回值。我想将其映射到Pythonfrozenset(或常规set)但似乎没有一种直接的方法可以做到这一点。有谁知道如何完成这项任务。 最佳答案 或者您可以使用std::map而不是std::set,该值可以是例如0。std::map具有与std::set相同的插入/搜索时间复杂度,它还保持键的顺序,它只会使内存膨胀一点。然后你可以使用map索引套件,在python中你可以根据需要隐藏一些包装类中的差异。缺点是您必须稍微修改现有的c++代码。

c++ - 在 boost::ptr_unordered_map 中存储指向 const 对象的指针

我似乎做不到boost::ptr_unordered_map工作-底层实现看起来像是将东西转换为void*.我是否只需要硬着头皮让我的方法包装对此的访问做一个const_cast插入项目时,或者我在这里遗漏了什么?有什么方法可以存储指向const对象的指针(constFoo*)? 最佳答案 看起来这是不可能的。解决方法是包装对ptr_unordered_map的访问.插入方法应该采用constauto_ptr然后执行const_cast插入它。如果您在删除元素时将auto_type交还给客户端代码,则需要从中解压指针并将其传输到co

c++ - 将 boost::log 用于具有额外 'channel' 和 'id' 属性的多线程应用程序的最佳方法是什么

我想将一个多线程应用程序同时登录到控制台和文件,日志行应该是这样的:2011-07-1814:48:51.849100COREW:message100是唯一的id'CORE'是一个channel,我可以有更多的channel,例如数据、网络。'W'表示警告目前我尝试过,大致是:boost::log::sources::severity_loggersevlogger;enumChannel{Core,...};attrChannel.reset(newboost::log::attributes::mutable_constant(Core));boost::log::core::ge

c++ - boost 无锁使用用户定义类型

我尝试使用boost无锁库。但是,出现错误invalidapplicationof‘sizeof’toincompletetype‘boost::STATIC_ASSERTION_FAILURE’当我将模板参数设置为用户定义类型时。有办法解决吗?typedefstructTMsgBuffer{charm_puBuffer[512];size_tm_iBufferLen;}tMsgBuffer;boost::lockfree::fifofifo; 最佳答案 STATIC_ASSERTION_FAILURE源自BOOST_STATIC_

c++ - boost Asio : waiting until thread_group has processed all posted tasks?

我有一个对象,一旦创建就会在后台执行许多任务,但应该阻塞直到/所有/发布的任务完成。即:structrun_many{boost::asio::io_servicem_io_service;boost::thread_groupm_threads;boost::asio::signal_setm_signals;voidevaluate(std::stringwork,inti){/*...*/}voidrun_tasks(inttasks,std::stringwork){{boost::asio::io_service::workw(m_io_service);//for(inti

c++ - 如何使用 boost::asio 在 http 上进行 POST?

你好,我正在尝试使用boost::asio进行POST,但我无法这样做。我正在看这个示例代码:http://www.boost.org/doc/libs/1_49_0/doc/html/boost_asio/example/http/client/sync_client.cpp如何使用POST而不是GET来编写此代码? 最佳答案 asio在传输层(例如tcp套接字)上工作,而不是在应用程序层上工作。如果您选择广泛使用的http客户端库而不是自己实现http协议(protocol),您的解决方案将更易于维护。SO上经常提到curl、p

c++ - 跨线程复制 boost::exception 崩溃

下面的示例代码将boost::exception对象从1个线程复制/传输到另一个线程,由于异常/exception_ptr内部状态销毁期间的竞争条件而崩溃。我不确定解决它的最佳方法是什么。使用的boost版本是1.42,平台是在双核Intelm/c上运行的Ubuntulucid。编译器是gcc4.4.3。#include#include#includestructException:publicvirtualstd::exception,publicvirtualboost::exception{};structMyException:publicvirtualException{};