这里的问题是:
我有一个共享库,默认情况下隐藏了一些符号。实际上,它使用"-Xlinker --version-script="选项来将某些符号导出到指定的文件中,但是隐藏了所有其他符号。问题在于,如果我们尝试捕获在其他共享库中定义的异常,我们会遇到问题,因为此共享库隐藏了typeinfo。我不能显式地使异常类可见,因为它们在开源库中定义,并且超出了我的控制范围。我也不想在版本脚本符号文件中显式列出异常类的typeinfo的mangled名称,因为有许多开发人员在处理该库,他们肯定会忘记为将来的某些异常类执行此操作。
我尝试在开源.hpp文件之前使用#pragma GCC visibility push(default),但它似乎没有起作用-符号并不可见。
我还尝试使用-fvisibility-ms-compat,它确实导出了typeinfo符号,但也导出了我不想要导出的大量其他符号。该库同时包含C和C++代码,因此我不确定如何使用此仅用于C++的选项。
我真正需要的是一种选项,可以使所有typeinfo符号可见,同时隐藏其他符号(除非它们明确可见)。是否有这样的选项?
我有一个共享库,默认情况下隐藏了一些符号。实际上,它使用"-Xlinker --version-script="选项来将某些符号导出到指定的文件中,但是隐藏了所有其他符号。问题在于,如果我们尝试捕获在其他共享库中定义的异常,我们会遇到问题,因为此共享库隐藏了typeinfo。我不能显式地使异常类可见,因为它们在开源库中定义,并且超出了我的控制范围。我也不想在版本脚本符号文件中显式列出异常类的typeinfo的mangled名称,因为有许多开发人员在处理该库,他们肯定会忘记为将来的某些异常类执行此操作。
我尝试在开源.hpp文件之前使用#pragma GCC visibility push(default),但它似乎没有起作用-符号并不可见。
我还尝试使用-fvisibility-ms-compat,它确实导出了typeinfo符号,但也导出了我不想要导出的大量其他符号。该库同时包含C和C++代码,因此我不确定如何使用此仅用于C++的选项。
我真正需要的是一种选项,可以使所有typeinfo符号可见,同时隐藏其他符号(除非它们明确可见)。是否有这样的选项?