Неопределенные символы для архитектуры armv7?Что означает эта ошибка? - PullRequest
5 голосов
/ 28 декабря 2011

Я только что пометил весь свой код CocoaAsyncSocket как не-ARC-код, и он дал мне эти 3 ошибки:

Undefined symbols for architecture armv7:
  "_kCFStreamNetworkServiceTypeVoIP", referenced from:
      -[GCDAsyncSocket enableBackgroundingOnSocketWithCaveat:] in GCDAsyncSocket.o
  "_kCFStreamNetworkServiceType", referenced from:
      -[GCDAsyncSocket enableBackgroundingOnSocketWithCaveat:] in GCDAsyncSocket.o
  "_kCFStreamPropertySSLSettings", referenced from:
      -[GCDAsyncSocket maybeStartTLS] in GCDAsyncSocket.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Кто-нибудь знает, что это значит и как это исправить?

Ответы [ 3 ]

16 голосов
/ 24 января 2012

Я думаю, что нашел решение этой проблемы, посмотрев в комментарии к коду, но теперь я вижу, что это также то, что Марк Адамс предложил выше.У меня были ошибки, пока я не добавил CFNetwork.framework в Targets-> Build Phases-> Link Binary With Libraries-> Select CFNetwork.framework

4 голосов
/ 28 декабря 2011

Это означает, что некоторый код, который вы компилируете, ссылается на константы "kCFStreamNetworkServiceTypeVoIP", "kCFStreamNetworkServiceType" и "kCFStreamPropertySSLSettings", но эти константы не были найдены при попытке связать ваш код с используемыми им библиотеками *.1001 *

К сожалению, есть множество причин, по которым это может быть:

  • Вы могли ошибиться в них
  • Они могут быть # ifdef'd для этой архитектуры
  • Возможно, вы не связываете правильный librar (y, ies)
  • Они могут быть помечены как имеющие «скрытую» видимость, чтобы их можно было использовать только в декларирующей библиотеке
  • Возможно, другиепричины

Вы можете использовать 'nm', чтобы тыкать в экспортированные символы из двоичного файла библиотеки, и 'otool -L', чтобы проверить, с какими библиотеками связывает ваш двоичный файл.

0 голосов
/ 07 сентября 2014

У меня была такая же ошибка при интеграции LineaPro API в приложение.

Исправление, которое я реализовал, добавляло ExternalAccessory.framework в Общие -> Связанные рамки и библиотеки.

Я уже включил CFNetwork.framework.

...