gpt4 book ai didi

swift3 - 无法向命令行工具添加动态框架

转载 作者:行者123 更新时间:2023-12-04 22:57:26 25 4
gpt4 key购买 nike

目标

我将命令行工具目标添加到 iOS 应用程序并与 swift 框架链接。 (用 RealmSwiftyJSON 测试)

预期成绩

使用这些库构建命令行工具。

实际结果

Xcode 输出:dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: .../Xcode/DerivedData/.../Build/Products/Debug/RealmSwift.framework/Versions/A/RealmSwift
Reason: Incompatible library version: RealmSwift requires version 1.0.0 or later, but libswiftCore.dylib provides version 0.0.0

重现步骤

创建空的 Swift 命令行工具并链接 Realm 框架

代码示例

CommandLineTest.zip

框架和工具的版本

领域版本:github "realm/realm-cocoa" "master"SwiftyJSON 版本:github "acegreen/SwiftyJSON" "swift3"
Xcode 版本:8 GM(在 App Store 上)

依赖管理器 + 版本:Carthage 0.18

最佳答案

命令行工具最适合静态存档,因为所有内容都作为单个二进制文件分发。查看 Realm,我没有看到有静态存档选项。他们确实有我为 macOS 编译的 iOS 静态框架,但这并不是您想要的。您可能想尝试更多地使用 Realm 的源代码,看看是否可以让它生成静态存档。

同时,作为 解决方法 ,您需要告诉 Xcode 在运行时在哪里可以找到 dylib,并且还需要将它们安装在某个地方。

  • 在您的build设置中,转到“运行路径搜索路径”并添加“@rpath”。
  • 在 Build Phases 中,在 Copy Files 下,单击 + 按钮并从项目中添加 Realm.framework 和 RealmSwift.framework。
  • 由于 Realm 是使用较旧版本的 Swift 编译的,因此您还需要在 Build Settings 中指定“Use Legacy Swift Language Version”。

  • 这将使您的项目构建并找到 Realm 库,但现在它将无法找到 libswiftCore.dylib。这是因为通常命令行工具与 Swift 库静态链接,但是一旦添加框架/dylib,链接器就不再包含静态版本。
  • 返回构建阶段,复制文件,并添加以下内容:

  • libswiftObjectiveC.dylib
    libswiftIOKit.dylib
    libswiftFoundation.dylib
    libswiftDispatch.dylib
    libswiftDarwin.dylib
    libswiftCoreGraphics.dylib
    libswiftCore.dylib


    您可以在 Xcode 安装中找到它们,然后在 ./Contents/Developer/Toolchains/Swift_2.3.xctoolchain/usr/lib/swift/macosx/

    警告:请记住,您需要使用命令行工具分发框架和 dylib,并且它们需要与该工具位于同一目录中。您可以通过指定不同的运行路径将它们放在系统上的其他位置,但您仍然需要将它们与您的工具一起分发。

    .app 包的好处在于它为您提供了一个放置这些东西的地方,用户只需拖放即可安装它。如果您可以获得 Realm 的静态存档版本,您就可以将所有内容分发到一个二进制文件中。

    关于swift3 - 无法向命令行工具添加动态框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39496415/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com