1

我正在尝试构建一个依赖于框架的 swift 包,但是该下游框架正在引发错误。

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_PDFDocument", referenced from:
      objc-class-ref in Slice.swift.o
      objc-class-ref in Utility.swift.o
  "_OBJC_CLASS_$_PDFPage", referenced from:
      objc-class-ref in Slice.swift.o
      objc-class-ref in Utility.swift.o
ld: symbol(s) not found for architecture x86_64

下游框架可以独立构建,但是当它作为依赖项添加到其他东西时,它会很痛苦。

iOS 或 macOS SDK 中的“PDFKit”似乎没有链接。我将如何链接?

我尝试将以下内容添加到我的代码中以查看它是否会有所作为,但没有。

#if os(macOS) 
import Quartz.PDFKit
#else
import PDFKit
#endif

该错误表明 PDFKit 需要在我的 Package.swift 文件中列出...?

编辑

如果我在此处手动选择“PDFKit”,该错误将被消除。然而,这个 Xcode 实例是用

swift package generate-xcodeproj

所以手动改变东西不应该是必要的......

在此处输入图像描述

4

2 回答 2

0

swift 论坛的帮助下,我设法使用这个 API找到了答案。

于 2020-12-22T17:23:17.640 回答
0

这是我在 Package.swift 中的正确用法

如何在 swift 包中链接系统框架/库

  targets: [
    .target(
      name: "SomeTarget",
      dependencies: [ ... ],
      linkerSettings: [
        .linkedFramework("PDFKit")
      ]
    ),
  ]

请注意,LinkerSetting 同时具有.linkedFramework(..).linkedLibrary(..)

于 2021-02-24T23:00:16.587 回答