链接器命令失败,退出代码为 1(使用 -v 查看调用),Swift 3

Linker command failed with exit code 1 (use -v to see invocation) with Swift 3

我正在努力构建一个 Swift 库并且我是 hosting it on GitHub

一切顺利,直到我将 BluetoothKit 添加到项目中。然后我收到一个 Apple Mach-O 链接器错误:

ld: warning: directory not found for option '-F/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10.0.sdk/Developer/Library/Frameworks'
ld: /Users/calebklevetertest/Library/Developer/Xcode/DerivedData/Napalm-dblvhbjdwovurocsvzrzaxzkjjyw/Build/Products/Debug-iphonesimulator/Napalm.framework/Napalm compiled with older version of Swift language (2.0) than previous files (3.0) for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

从阅读错误来看,问题似乎源于我正在使用 Swift 3,但我不知道如何解决它。

我在添加时确实将 BluetoothKit 转换为 Swift3。

有一个 class 使用 BluetoothKit,它被称为 NPFBluetooth

需要注意的几件事是 1) 即使 class 是 public,编译器也会给出错误 'unresolved identifier',2) class 不会显示在自动完成和 3) 所有其他 class 都可以正常工作。

转到您的构建设置并将目标的设置暂时切换为 ENABLE_BITCODE = YES。 它对我有用 ;)

我运行进入迁移到swift3的错误。事实证明 Xcode 保留了已构建框架的副本,迁移到 swift3 显然不是重建这些框架的提示(即使发现它是使用 swift2 构建的......不,让我们抛出一个模糊的错误...... )

解决方法是

适用于使用 Carthage 和 cocoapods 安装的框架......