Как устранить ошибку неопределенных символов? - PullRequest
2 голосов
/ 30 апреля 2009

Я получаю эту ошибку

Undefined symbols:
".objc_class_name_MyClass", referenced from:
  literal-pointer@__OBJC@__cls_refs@MyClass in infoViewController.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

При ссылке на статический метод ниже:

[MyClass ClickComment:self.navigationController];

MyClass определен в статической библиотеке, на которую я ссылаюсь в своем проекте приложения. Когда я начинаю печатать "[MyClass" ..., я получаю подсказки сообщений. Проект приложения знает, что MyClass существует и какие методы определены в нем. Тем не менее, я получаю вышеуказанную ошибку. Закомментирование этого вызова позволяет строить проект без ошибок.

В статической библиотеке у меня есть файл .h, который ссылается на все файлы библиотеки .h. Таким образом, проект приложения должен ссылаться только на один файл .h из статической библиотеки. Проект статической библиотеки также имеет приложение. Я использую его для проверки статической библиотеки. Я могу сделать вышеупомянутый вызов в порядке. Обычно я вижу такие ошибки, когда в статической библиотеке собрана версия устройства / отладки, а в проекте приложения есть симулятор / отладка сборки. Однако обе сборки синхронизированы.

Я знаю, что есть ссылка, но я не знаю, как ее решить. Есть предложения?

1 Ответ

5 голосов
/ 30 апреля 2009

Это означает, что заголовочные файлы находятся во время компиляции, но компоновщик не знает о статической библиотеке. Убедитесь, что ваша статическая библиотека находится в списке «Targets -> YourMainTarget> Link Binary with Libraries» в виде проекта.

См. http://developer.apple.com/tools/XCode/XCodeprojects.html

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