使用C库的架构x86_64的未定义符号

时间:2012-10-03 22:45:24

标签: objective-c c xcode macos

我遇到了很多链接器错误。我确保通过macports安装我需要的所有库。我整理了所有包含错误,但现在我还有很多链接器错误。

HEADER_SEARCH_PATHS = / opt / local / include / usr / include / opt / local / include / json LIBRARY_SEARCH_PATHS = / opt / local / lib / usr / local / lib

Build target PianoLounge

Ld /Users/jordan/Library/Developer/Xcode/DerivedData/PianoLounge-ajgojrzszrergafgvyuliphwxcpg/Build/Products/Debug/PianoLounge.app/Contents/MacOS/PianoLounge normal x86_64
    cd /Users/jordan/Projects/Cocoa/PianoLounge
    setenv MACOSX_DEPLOYMENT_TARGET 10.8
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -L/Users/jordan/Library/Developer/Xcode/DerivedData/PianoLounge-ajgojrzszrergafgvyuliphwxcpg/Build/Products/Debug -L/opt/local/lib -L/usr/local/lib -F/Users/jordan/Library/Developer/Xcode/DerivedData/PianoLounge-ajgojrzszrergafgvyuliphwxcpg/Build/Products/Debug -filelist /Users/jordan/Library/Developer/Xcode/DerivedData/PianoLounge-ajgojrzszrergafgvyuliphwxcpg/Build/Intermediates/PianoLounge.build/Debug/PianoLounge.build/Objects-normal/x86_64/PianoLounge.LinkFileList -mmacosx-version-min=10.8 -fobjc-arc -fobjc-link-runtime -framework Cocoa -o /Users/jordan/Library/Developer/Xcode/DerivedData/PianoLounge-ajgojrzszrergafgvyuliphwxcpg/Build/Products/Debug/PianoLounge.app/Contents/MacOS/PianoLounge

Undefined symbols for architecture x86_64:
  "_gcry_cipher_close", referenced from:
      _PianoDestroyPartner in piano.o
  "_gcry_cipher_decrypt", referenced from:
      _PianoDecryptString in crypt.o
  "_gcry_cipher_encrypt", referenced from:
      _PianoEncryptString in crypt.o
  "_gcry_cipher_open", referenced from:
      _PianoInit in piano.o
  "_gcry_cipher_setkey", referenced from:
      _PianoInit in piano.o
  "_gnutls_bye", referenced from:
      _WaitressFetchCall in waitress.o
  "_gnutls_certificate_allocate_credentials", referenced from:
      _WaitressFetchCall in waitress.o
  "_gnutls_certificate_free_credentials", referenced from:
      _WaitressFetchCall in waitress.o
  "_gnutls_certificate_get_peers", referenced from:
      _WaitressTlsVerify in waitress.o
  "_gnutls_certificate_type_get", referenced from:
      _WaitressTlsVerify in waitress.o
  "_gnutls_credentials_set", referenced from:
      _WaitressFetchCall in waitress.o
  "_gnutls_deinit", referenced from:
      _WaitressFetchCall in waitress.o
  "_gnutls_handshake", referenced from:
      _WaitressConnect in waitress.o
  "_gnutls_init", referenced from:
      _WaitressFetchCall in waitress.o
  "_gnutls_record_recv", referenced from:
      _WaitressGnutlsRead in waitress.o
  "_gnutls_record_send", referenced from:
      _WaitressGnutlsWrite in waitress.o
  "_gnutls_set_default_priority", referenced from:
      _WaitressFetchCall in waitress.o
  "_gnutls_transport_set_ptr", referenced from:
      _WaitressFetchCall in waitress.o
  "_gnutls_transport_set_pull_function", referenced from:
      _WaitressFetchCall in waitress.o
  "_gnutls_transport_set_push_function", referenced from:
      _WaitressFetchCall in waitress.o
  "_gnutls_x509_crt_deinit", referenced from:
      _WaitressTlsVerify in waitress.o
  "_gnutls_x509_crt_get_fingerprint", referenced from:
      _WaitressTlsVerify in waitress.o
  "_gnutls_x509_crt_import", referenced from:
      _WaitressTlsVerify in waitress.o
  "_gnutls_x509_crt_init", referenced from:
      _WaitressTlsVerify in waitress.o
  "_json_object_array_add", referenced from:
      _PianoRequest in request.o
  "_json_object_array_get_idx", referenced from:
      _PianoResponse in response.o
  "_json_object_array_length", referenced from:
      _PianoResponse in response.o
  "_json_object_get_boolean", referenced from:
      _PianoResponse in response.o
      _PianoJsonParseStation in response.o
  "_json_object_get_double", referenced from:
      _PianoResponse in response.o
  "_json_object_get_int", referenced from:
      _PianoResponse in response.o
  "_json_object_get_object", referenced from:
      _PianoResponse in response.o
  "_json_object_get_string", referenced from:
      _PianoResponse in response.o
      _PianoJsonStrdup in response.o
  "_json_object_new_array", referenced from:
      _PianoRequest in request.o
  "_json_object_new_boolean", referenced from:
      _PianoRequest in request.o
  "_json_object_new_int", referenced from:
      _PianoRequest in request.o
  "_json_object_new_object", referenced from:
      _PianoRequest in request.o
  "_json_object_new_string", referenced from:
      _PianoRequest in request.o
  "_json_object_object_add", referenced from:
      _PianoRequest in request.o
  "_json_object_object_get", referenced from:
      _PianoResponse in response.o
      _PianoJsonStrdup in response.o
      _PianoJsonParseStation in response.o
  "_json_object_put", referenced from:
      _PianoRequest in request.o
      _PianoResponse in response.o
  "_json_object_to_json_string", referenced from:
      _PianoRequest in request.o
  "_json_tokener_parse", referenced from:
      _PianoResponse in response.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

1 个答案:

答案 0 :(得分:2)

看起来你错过了所需的库gnutls,gcrypt和json来链接。除非你告诉Xcode要链接哪些库,否则不会有任何想法。它看起来像这样:

-lgnutls -lgcrypt -ljson

(这是一个例子,我不确定具体需要哪些库。)

您需要将这些作为额外的库添加到Xcode项目中进行链接。