c++ - "symbol(s) not found for architecture x86_64"由于 C 函数而导致的错误

标签 c++ ios objective-c c xcode

我在 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/

相关文章:

c# - 我们可以用 DllImport 方法签名中的 "int"替换所有 "IntPtr"参数和返回类型吗?

ios - URL(fileURLWithPath : Bundle. main.path(forResource : "ports", ofType : "geojson")!) 为零?

ios - 无法离开行操作按钮

objective-c - Cocoa 中与 void* 上下文相关的内存管理

c++ - 使用 Linux 将 DVD 内容复制到硬盘的最快方法是什么?

c++ - Iaccessible接口(interface)的accLoacation()方法中的参数如何初始化?

c++ - VS 调试器中未正确显示具有嵌套类型的 QList

ios - Swift 5 Alamofire 字典解析错误

ios - IBOutlet 创建的不同方法

iphone - 保存 ManagedObjectContext 返回 null 错误