带有 Xcode 6.1.1 的静态库和 cocoapods - ld:找不到库错误



不确定它是否与Xcode 6.1.1或Cocoapods 0.35.0有关。

我用Xcode 6.1.1生成了新的静态iOS库。

成功(不含椰子荚)

  1. 生成模拟器和设备库
  2. Lipo 到两者并生成 FAT MyLib.a 静态最终库
  3. 创建新的视图应用程序项目。(我没有更改任何默认设置,例如基本SDK,有效架构。
  4. 手动将 MyLib.a 和必要的头文件添加到应用程序项目中。
  5. 构建应用程序项目,它工作正常! 没有错误没有警告。

错误

  1. 将相同的MyLib.a和标头(上面生成)上传到HTTP直接下载服务器(一种工件服务器)。
  2. 生成规范和 podfile。
  3. 从我之前手动完成的应用程序项目中删除所有依赖项(lib 和标头)。
  4. 添加 pod 文件和本地规范
  5. "pod install"命令在/Pods 文件夹中正确拉出 MyLib.a 和标头。

但是在构建应用程序项目时给了我

   Ld Build/Products/Debug-iphonesimulator/LibTest.app/LibTest normal x86_64
    cd /Users/admin/Cocoapods/Project/Library/TestProject/LibTest
    export IPHONEOS_DEPLOYMENT_TARGET=8.1
 ld: library not found for -lMyLib
 clang: error: linker command failed with exit code 1 (use -v to see invocation)

当我在MyLib.a上触发"lipo"命令时

胖文件中的架构:/Users/admin/Cocoapods/Project/Library/Libs/Final/MyLib.a 是: armv7 armv7s i386 x86_64 arm64

不是真正的架构问题,否则它应该在我第一次尝试没有cocoapods时失败。Cocoapods 会进行一些构建配置更改,这会产生此问题。

帮助我解决此问题。

在花了 2 天时间找出确切的问题后,我发现了非常愚蠢的修复。它基本上是静态库命名约定问题的问题。如果您在 artifact/media http 服务器中有静态库,并希望与 Cococapods 集成,请确保库名称应为 lib(您的名称).a 以及标头。

就我而言,我保留了MyLib,并且目前在"pod安装"时将其下载,但在应用程序构建过程中失败了。重命名为 libMyLib.a 后,一切都对我有用。:)

非常容易应用,但很难找到这样的解决方案]

不确定cocoapods是否在任何指南中记录了这一点。

最新更新