Как исправить & quot; type_info’s имеет скрытую видимость. Все они должны быть публично видны. & Quot ;?

В системной консоли macOS эта ошибка регистрируется при запуске одного из моих приложений:

APP [28193]: ошибка динамического вещания 2: один или несколько из следующих типов данных имеют скрытую видимость. Все они должны иметь публичную видимость. 17CPPNameOfClassA, 28CPPNameOfClassB.

Насколько я могу судить, это не влияет на функциональность (пока), но, очевидно, что-то не так. Проверка источника этого предупреждения в лязг источники также предполагают, что это оказывает влияние на производительность.

Это генерируется для фреймворка, включающего классы C ++, используемые другими фреймворками в моем приложении, ссылающемся на него

FWIW, предупреждение вызвано private_typeinfo.cpp класс в лязг (https://github.com/llvm-mirror/libcxxabi/blob/master/src/private_typeinfo.cpp).

Согласно Управление видимостью символов глава в Apple Руководство по программированию среды выполнения C ++ Я должен иметь возможность контролировать видимость на уровне класса с помощью атрибутов или прагм GCC.

Насколько я могу судить, этот символ уже виден nm и мои рамки все уже есть Default видимость (т.е. НЕ Hidden).

Также использование либо (атрибута, либо прагмы) для принудительного отображения по умолчанию приводит к сбою приложения, когда оно только создало предупреждение.

Как ни странно это предупреждение генерируется только для некоторых классов, в то время как большинство других классов в том же модуле компиляции / рамки не вызывать никаких предупреждений.

Будем очень благодарны за любые дополнительные советы или идеи о том, как решить эту проблему!

1

Решение

Это старый вопрос, но, возможно, это поможет кому-то еще с той же проблемой.

Одной из причин этого может быть то, что ваше приложение загружает несколько разных версий одной и той же библиотеки. Например, в моем случае я просто не удалил путь к старой версии из пути поиска библиотеки. Попробуйте посмотреть (в отладчике), какие библиотеки загружены в ваше приложение, и убедитесь, что одна и та же библиотека не была загружена из разных мест.

Пытаясь решить эту проблему, я нашел эти ссылки полезными: https://forums.wxwidgets.org/viewtopic.php?t=42566, http://www.russellmcc.com/posts/2013-08-03-rtti.html.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]