gpt4 book ai didi

c++ - 如何修复 "type_info' s 具有隐藏的可见性。他们都应该有公众可见度。”?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:40:43 25 4
gpt4 key购买 nike

在 macOS 系统控制台上,启动我的一个应用程序时会记录此错误:

APP[28193]: dynamic_cast error 2: One or more of the following type_info's has hidden visibility. They should all have public visibility. 17CPPNameOfClassA, 28CPPNameOfClassB.

据我所知,它(目前)还没有影响功能,但显然有问题。检查 Clang 来源中此警告的来源也表明它对性能有影响。

这是为一个框架生成的,包括我的应用程序中引用它的其他框架使用的 C++ 类。

FWIW,警告是由 Clang ( https://github.com/llvm-mirror/libcxxabi/blob/master/src/private_typeinfo.cpp ) 中的 private_typeinfo.cpp 类引起的。

根据 Apple 的C++ 运行时环境编程指南中的控制符号可见性一章,我应该能够使用属性或 GCC pragma 在类级别上控制可见性。 p>

据我所知,符号已经可见 nm 并且我的框架都已经具有 Default 可见性(即 NOT 隐藏)。

同时使用(属性或编译指示)强制默认可见性会导致应用崩溃,而之前它只创建了警告。

奇怪的是,此警告仅针对某些类生成,而同一编译单元/框架中的大多数其他类不会导致任何警告。

非常感谢任何关于如何解决此问题的进一步提示或想法!

最佳答案

这是一个老问题,但也许这会对遇到同样问题的其他人有所帮助。

发生这种情况的原因之一是您的应用加载了同一库的多个不同版本。例如,在我的例子中,我只是没有从库搜索路径中删除旧版本的路径。尝试查看(在调试器中)您的应用中加载了哪些库,并检查是否未从不同位置加载相同的库。

在尝试解决此问题时,我发现这些链接很有用:https://forums.wxwidgets.org/viewtopic.php?t=42566 , http://www.russellmcc.com/posts/2013-08-03-rtti.html .

关于c++ - 如何修复 "type_info' s 具有隐藏的可见性。他们都应该有公众可见度。”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51297638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com