我正在尝试使用-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;
答案 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
¹它没有