2015-01-09 100 views
4

不确定它是否与Xcode 6.1.1或Cocoapods 0.35.0相关。静态库和cocoapods与Xcode 6.1.1 - ld:库未找到错误

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

成功(没有的CocoaPods)

  1. 生成模拟器和设备库
  2. 前列双方并生成FAT mylib.a上静态最终LIB
  3. 创建新的View应用程序项目。 (我没有更改任何默认设置,例如Base SDK,Valid Architecture。)
  4. 手动添加MyLib.a和必要的头文件到应用程序项目。
  5. 建立应用程序项目和它工作得很好!没有错误没有警告。

错误

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

但在构建应用项目,使我mylib.a上

架构FAT文件

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) 

当我火了 “脂” 命令:/用户/管理员/的CocoaPods /Project/Library/Libs/Final/MyLib.a是:armv7 armv7s i386 x86_64 arm64

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

帮我解决这个问题。

回答

3

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

在我的情况下,我保留了MyLib,它在当前“pod安装”时下载了,但在应用程序构建过程中失败了。 重命名为libMyLib.a后,每件事都适合我。:)

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

不知道是否已经在那里任何引导记录本或没有。

+0

+1是的,这是'ld'默认如何查找一个库文件,它应该以'lib'作为前缀,文件将是'libMyLib.a',而实际的'ld'链接器标志会是'-lMylib'。 – Jason