Неопределенные символы для архитектуры armv7 при добавлении CocoaAsyncSocket

Я пытаюсь использовать XMPPFramework с проектом iOS5 (ARC) под xcode 4.2.1, но столкнулся с этой проблемой. Как только я добавлю CocoaAsyncSocket в свой проект в рамках подготовки моего проекта к использованию XMPPFramework, как в 1 Я получаю следующую ошибку.

Я видел, что у некоторых других людей есть «Неопределенные символы для архитектуры armv7», но я еще не нашел ответа на этот конкретный вопрос, который у меня есть в данный момент.

Я связался с CFNetwork и пометил GCDAsyncSocket.m как не-ARC (-fno-objc-arc), но я все еще получаю сообщение об ошибке. Любая помощь приветствуется.

Undefined symbols for architecture armv7:
  "_SSLGetBufferedReadSize", referenced from:
      ___33-[GCDAsyncSocket flushSSLBuffers]_block_invoke_0 in GCDAsyncSocket.o
      -[GCDAsyncSocket doReadData] in GCDAsyncSocket.o
  "_SSLSetIOFuncs", referenced from:
      -[GCDAsyncSocket ssl_startTLS] in GCDAsyncSocket.o
  "_SSLRead", referenced from:
      -[GCDAsyncSocket flushSSLBuffers] in GCDAsyncSocket.o
      -[GCDAsyncSocket doReadData] in GCDAsyncSocket.o
  "_SSLWrite", referenced from:
      -[GCDAsyncSocket doWriteData] in GCDAsyncSocket.o
  "_SSLClose", referenced from:
      -[GCDAsyncSocket closeWithError:] in GCDAsyncSocket.o
  "_SSLCreateContext", referenced from:
      -[GCDAsyncSocket ssl_startTLS] in GCDAsyncSocket.o
  "_SSLSetEnabledCiphers", referenced from:
      -[GCDAsyncSocket ssl_startTLS] in GCDAsyncSocket.o
  "_SSLSetCertificate", referenced from:
      -[GCDAsyncSocket ssl_startTLS] in GCDAsyncSocket.o
  "_SSLSetConnection", referenced from:
      -[GCDAsyncSocket ssl_startTLS] in GCDAsyncSocket.o
  "_SSLHandshake", referenced from:
      -[GCDAsyncSocket ssl_continueSSLHandshake] in GCDAsyncSocket.o
  "_SSLSetProtocolVersionMax", referenced from:
      -[GCDAsyncSocket ssl_startTLS] in GCDAsyncSocket.o
  "_SSLSetPeerDomainName", referenced from:
      -[GCDAsyncSocket ssl_startTLS] in GCDAsyncSocket.o
  "_SSLSetProtocolVersionMin", referenced from:
      -[GCDAsyncSocket ssl_startTLS] 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)

person Future2020    schedule 05.04.2012    source источник


Ответы (1)


Вам просто нужно добавить SecurityFramework в Frameworks. Я также встретил эту же проблему.

person sunmax    schedule 08.04.2012
comment
Оно работает! Интересно, нигде не было указано, что нужен еще и фреймворк безопасности. Спасибо за Ваш ответ. - person Future2020; 08.04.2012
comment
Порядок важен: сначала CFNetwork.framework, а затем Security.framework; у меня выдает 14 ошибок при компиляции, после этого фикса все ОК. - person Martin; 21.03.2013
comment
Что касается моего последнего комментария, заказывайте в: Project › Build Phases › Link Library. - person Martin; 21.03.2013