Xcode4: ошибка компоновщика "плохой кодовый код, указатель diff" снова - PullRequest
4 голосов
/ 29 августа 2011

Этот вопрос связан с этим: Ошибка компоновщика "плохой кодовый код, разность указателей" с Xcode 4 и Ошибка "плохой кодовый код, разный указатель в ускорении" в 32-разрядной сборке и XCode 3.2.6 и 4 ошибки компоновщика ld: неверный кодоген, указатель diff в ... на глобальный слабый символ

В настоящее время я обновляю все свои проекты до Xcode4 и испытываю некоторыестранность.- Вышеуказанная ошибка возникает, только если я собираю универсальный двоичный файл или 32-разрядную версию.Если я придерживаюсь только 64 бит, все работает нормально.Я сам создаю собственную статическую библиотеку, где прямо сейчас я не использую какие-либо настройки видимости (то есть атрибут ((видимость ("по умолчанию")))) в этом коде.Если я свяжу эту библиотеку и попытаюсь построить проект, точная ошибка:

ld: плохой кодовый код, указатель diff в Motor :: Core :: DefaultStoragePolicy :: DefaultStoragePolicy (myWindowContent * const &) дляглобальный слабый символ Motor :: Core :: NullPointerException :: ~ NullPointerException () для архитектуры i386

Он находится в моем классе SmartPtr, который может генерировать исключение NullPointerException (просто происходит от std :: exception).Если я явно установил видимость класса NullPointerException на скрытый, все скомпилируется нормально, но скрытие исключения не может быть хорошим!Я попробовал следующие компиляторы: GCC 4.2, LLVM-GCC 4.2 и LLVM 2.1 - все с одной и той же проблемой.Настройка Символы, скрытые по умолчанию на да в настройках проекта / цели не работали (и это тоже не то, что я хочу).Так как я могу решить эту проблему, не скрывая своих исключений (а это чепуха).Должен ли я жить с этим, это ошибка?Жду ваших идей, спасибо!

1 Ответ

6 голосов
/ 29 августа 2011

Хорошо, я обнаружил ошибку, у меня Скрытые встроенные методы установлено в да в моем приложении, в то время как для статической библиотеки было установлено значение "нет"поэтому, если вы столкнулись с той же проблемой, убедитесь, что у вас Скрытые встроенные методы установлено на Нет .Теперь мой код также работает с Symbols Hidden By Default, для которого установлено значение no, что я и хочу!

Тем не менее, для меня загадка, почему ошибка появляется только в 32-битной сборке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...