使用clang编译时,找不到架构x86_64错误的符号

时间:2016-07-28 23:33:08

标签: objective-c macos clang

我正在尝试编译simple project(程序main.m和库TTTdictionary.m),但它给了我这个错误:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_NSString", referenced from:
      objc-class-ref in main-dba0a1.o
  "_OBJC_CLASS_$_TTTDictionary", referenced from:
      objc-class-ref in main-dba0a1.o
  "_objc_autoreleasePoolPop", referenced from:
      _main in main-dba0a1.o
  "_objc_autoreleasePoolPush", referenced from:
      _main in main-dba0a1.o
  "_objc_enumerationMutation", referenced from:
      _GetActiveDictionaryNames in main-dba0a1.o
      _main in main-dba0a1.o
  "_objc_msgSend", referenced from:
      _GetDictionaryNameFromBundlePath in main-dba0a1.o
      _GetActiveDictionaryNames in main-dba0a1.o
      _main in main-dba0a1.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

当我尝试编译./example/文件夹中的main.m文件时,会出现类似的错误消息。我把它们放在同一个文件夹中,我再次出现symbol(s) not found for architecture x86_64错误。

我做错了什么?终端中的命令是clang -framework CoreServices main.m -o main

1 个答案:

答案 0 :(得分:0)

它没有找到“main”,这意味着它不知道你正在编译库而不是可执行文件。将-dynamiclib添加到您的clang选项中并修复该选项。

其他缺少的函数是未记录的CoreServices函数。添加-framework CoreServices来修复这些问题。

然后你只有警告。 :)