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

时间:2015-01-09 15:02:02

标签: ios xcode xcode6 static-libraries cocoapods

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

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

成功(没有cocoapods)

  1. 生成模拟器和设备库
  2. Lipo to both并生成FAT MyLib.a static final lib
  3. 创建新的View Application项目。 (我没有更改任何默认设置。例如Base SDK,Valid Architecture。)
  4. 手动将MyLib.a和必要的头文件添加到应用程序项目中。
  5. 构建应用项目,IT工作精细!没有错误没有警告。
  6. 错误

    1. 上传相同的MyLib.a&标头(上面生成)到HTTP直接下载服务器(工件服务器的种类)。
    2. 生成规格& podfile。
    3. 从我之前手动完成的app项目中删除所有依赖项(lib和header)。
    4. 添加pod文件和本地规范
    5. “Pod install”命令在/ Pods文件夹中正确拉出MyLib.a和标题。
    6. 但是,在构建应用项目时,我会

         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做了一些构建配置更改,这就产生了这个问题。

      帮我解决此问题。

1 个答案:

答案 0 :(得分:3)

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

在我的情况下,我保留了MyLib并且当前已经下载了#34; pod install"但在应用程序构建期间,它失败了。 重命名为 libMyLib.a 后,每件事都适合我。 :)

很容易申请但很难找到这样的解决方案]

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