xcode with boost: linker (Id) Предупреждение о настройках видимости
14404 просмотра
6 ответа
Я использовал платформу повышения по ссылке ниже для моего проекта iPhone Xcode: https://goodliffe.blogspot.com/2010/09/building-boost-framework-for-ios-iphone.html
он работает нормально, но я всегда получаю сотни предупреждений Apple Mach-O Linker (id), таких как:
Прямой доступ в __ZN5boost15program_options6detail7cmdline24handle_additional_parserERSt6vectorISsSaISsEE к глобальному слабому символу __ZTVN5boost17bad_function_callE означает, что слабый символ не может быть переопределен во время выполнения. Вероятно, это было вызвано тем, что разные блоки перевода были скомпилированы с разными настройками видимости.
Как избавиться от этих предупреждений в коде?
Отредактировано: установив символы скрытые по умолчанию = YES, мне удалось избавиться от большинства предупреждений, но осталось еще 3, которые не исчезнут, кто-нибудь может сказать мне, почему?
снова отредактировано: после перестройки оставшиеся 3 предупреждения также исчезли! Так что мое решение сработало!
Автор: Gob00st Источник Размещён: 13.11.2019 11:50Ответы (6)
35 плюса
Если повышение включено несколькими проектами, каждый проект должен иметь одинаковые значения для
Symbols Hidden by Default
Inline Methods Hidden
Автор: cyrilchampier
Размещён: 09.08.2012 08:21
24 плюса
Доу только что подумал, как избавиться от сотен предупреждений, как это: установить для всей цели или проекта с настройкой сборки Symbols Hidden by Default значение YES
Автор: Gob00st Размещён: 30.12.2011 11:404 плюса
Компоновщик жалуется на различные настройки видимости между вашим проектом и Boost.
Вы также можете исправить эту проблему, перекомпилировав Boost с теми же настройками совместимости.
Просто добавь
cxxflags=-fvisibility=hidden
а также
cxxflags=-fvisibility-inlines-hidden
в bjam
командной строке.
1 плюс
Если повышение включено несколькими проектами, каждый проект должен иметь одинаковые значения для
Скрытые символы по умолчанию Встроенные методы скрыты
Нерит сказал, что это правильно, но в Xcode 4.6.3 они не являются приведенными выше «Символами, скрытыми по умолчанию» и «Скрытые встроенные методы», и я установил для gcc_symbols_private_extern значение yes, предупреждение исчезнет.
Автор: Samuel Lu Размещён: 15.10.2013 09:121 плюс
Установка символов, скрытых по умолчанию в NO, и встроенные методы, скрытые в NO, сработали для меня. Нет необходимости добавлять какой-либо флаг в другие флаги C ++
Автор: Desert Rose Размещён: 23.08.2018 12:170 плюса
У меня тоже была эта проблема.
Оказывается, я небрежно делал что-то вроде этого:
#pragma GCC visibility push(default)
#include <SomeExternalLibrary.h>
void myExampleSymbol();
#pragma GCC visibility pop
Что я решил, изменив на:
#include <SomeExternalLibrary.h>
#pragma GCC visibility push(default)
void myExampleSymbol();
#pragma GCC visibility pop
Автор: OLL
Размещён: 12.01.2015 04:00
Вопросы из категории :
- c++ What are the barriers to understanding pointers and what can be done to overcome them?
- c++ Какой самый простой способ для анализа файла INI в C ++?
- c++ Когда вы должны использовать «друг» в C ++?
- c++ Как вы очищаете переменную stringstream?
- c++ В C ++ конструктор и деструктор могут быть встроенными функциями?
- xcode Изменить шаблоны в Xcode
- xcode Как вы можете создать Makefile из проекта Xcode?
- xcode Инструменты обнаружения утечки памяти
- xcode Проверка контейнеров STL в Xcode
- xcode Xcode: ошибка кода приложения iPhone
- boost Как установить Boost на MacOS?
- boost Как отсортировать std :: vector по значениям другого std :: vector?
- boost Библиотека сериализации YAML для C ++?
- boost Как вы собираете библиотеки x64 Boost в Windows?
- boost Наиболее используемые части Boost
- warnings Предупреждение. Обнаружены конфликты между разными версиями одной и той же зависимой сборки.
- warnings Предупреждение компилятора «Нет новой строки в конце файла»
- warnings Что заставляет javac выдавать предупреждение «использует непроверенные или небезопасные операции»
- warnings Как я могу обработать предупреждение функции file_get_contents () в PHP?
- warnings Как я обращаюсь к непроверенным предупреждениям броска?