我在 Xcode 8.1 中使用一个使用框架目标的 iOS 应用程序项目时遇到以下编译错误,该项目又使用了包含一些 C 函数的 cocoapod:
Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_CUsingClass", referenced from: objc-class-ref in libSDKFile.a(SessionManager.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
我已经用尽了我找到的所有解决方案(build设置/架构等),C 代码甚至使用了 extern“C”指令(在 C 头文件中):
#ifdef __cplusplus
#define CODE_EXPORT extern "C"
#else
#define CODE_EXPORT extern
#endif
CODE_EXPORT unsigned int myCFunction(const char *src, char *dst, unsigned int dst_size);
使用 cocoapod lib 和 C 文件的框架目标编译成功,但应用程序目标失败,出现上述错误。如果我注释掉 C 函数 include,则应用程序编译成功。
有人知道这个问题的解决办法吗?
最佳答案
发现问题在于 podspec 文件中未正确设置第三方 pod 的依赖项条目,该文件用于将我自己的框架目标用作应用程序目标的 pod。因此,添加正确的依赖项并随后进行 pod 安装(和清理)修复了此问题:
s.dependency "ThirdpartyLib/Subspec"
我缺少子规范。
关于c++ - "symbol(s) not found for architecture x86_64"由于 C 函数而导致的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40735888/