更改boost :: error_info可见性

时间:2017-10-06 01:20:16

标签: c++ gcc boost visibility

我正在尝试使用-fvisibility = hidden进行编译,但无法弄清楚如何更改boost的可见性:: error_info typedef有人可以启发我吗?无论我在哪里把DVEM_EXPORT放在typedef行中,编译器拒绝它,除了编辑boost头以添加属性之外别无其他任何东西来解决运行时问题。

#ifdef....
#define DVEM_EXPORT __attribute__((visibility("default")))
....
class DVEM_EXPORT UnsupportedDataTypeException : public dv::BaseException<> {};
struct DVEM_EXPORT errinfo_data_type_ {};
typedef boost::error_info<errinfo_data_type_, std::string> errinfo_data_type;

1 个答案:

答案 0 :(得分:1)

typedef不会声明类型。

类型声明带有您的默认值 - hidden - 因此该类型实例的任何别名(例如<span id="confirm_pass_msg"> <i class="fa fa-check" style="font-size:30px;color:green"></i> </span>)也会被隐藏。

你是对的,修改Boost标头是最直接的方法。但是,只要 Boost标题没有覆盖可见性,你也可以非侵入式进行

所以你可以简单地转发声明与errinfo_data_type中相同的类型:

<强> Live On Coliru

boost/exception/error_info.hpp

¹它没有