首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无RTTI的ASIO

无RTTI的ASIO
EN

Stack Overflow用户
提问于 2022-10-17 14:22:28
回答 1查看 69关注 0票数 2

我试图在没有rtti的情况下使用ASIO (1.24),但我总是得到未定义的引用错误。所以我做了一个简单的测试程序来重现这个问题:

Main.cpp:

代码语言:javascript
复制
#define ASIO_STANDALONE
#define ASIO_HEADER_ONLY
#define ASIO_NO_EXCEPTIONS
#define ASIO_NO_TYPEID
#include "asio.hpp"

int main()
{
    asio::io_context io;

    return 0;
}

当它被编译

代码语言:javascript
复制
g++-12 -o Test -std=c++20 -fno-rtti -fno-exceptions -I../libs/Asio/1.24.0/include Main.cpp

我得到了

代码语言:javascript
复制
undefined reference to `void asio::detail::throw_exception<std::system_error>(std::system_error const&)'
undefined reference to `void asio::detail::throw_exception<asio::invalid_service_owner>(asio::invalid_service_owner const&)'
undefined reference to `void asio::detail::throw_exception<asio::service_already_exists>(asio::service_already_exists const&)'

我错过了什么吗?我怎样才能编译这个呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-17 14:56:34

如果您毫无例外地支持编译,则需要提供一个Boost文档状态函数:

此宏禁用Boost中的异常处理,将所有异常转发给用户定义的非模板版本的。但是,除非还定义了BOOST_EXCEPTION_DISABLE,否则用户仍然可以检查抛出点添加的任何数据的异常对象,或者使用boost::diagnostic_information (当然,在BOOST_NO_EXCEPTIONS下,用户定义的boost::throw_exception不允许返回给调用方)。

我认为这将直接转化为独立的Asio。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74098761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档