gpt4 book ai didi

swift - 如何在 Swift 中使用静态库和模块映射文件?

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:35 26 4
gpt4 key购买 nike

我正在尝试在我的 Swift 项目中包含一个第 3 方静态库。我有这两个文件,还有一些其他文件。

GoogleConversionTrackingSDK/ACTReporter.h GoogleConversionTrackingSDK/libGoogleConversionTracking.a

我将 .a 文件添加到目标的“链接框架和库”部分。然后我在我的项目中创建了一个 module.map 文件,如下所示:

module GoogleConversionTracking {
header "../../Libs/GoogleConversionTrackingSDK/ACTReporter.h"
export *
}

现在我可以在 Swift 文件中引用它:

import GoogleConversionTracking

但是我在链接时得到一个错误:

ld: library not found for -lGoogleConversionTracking
clang: error: linker command failed with exit code 1 (use -v to see invocation)
note: library not found for -lGoogleConversionTracking

你如何解决这个问题?我不想使用桥接 header ,而是尽可能使用这些模块定义文件。

最佳答案

模块图是我麻烦的代名词!桥接头很糟糕,但它们在大多数情况下都能正常工作。无论如何,请确保:

  • 配置 SWIFT_INCLUDE_PATHS – Swift 编译器搜索其他 Swift 模块的路径列表。这会告诉 Xcode 您的模块映射在哪里。
  • 配置 LIBRARY_SEARCH_PATHS – 这是一个文件夹路径列表,链接器将在其中搜索产品使用的库。 Xcode 仍然需要知道模块的二进制文件在哪里。

此外,您可能想使用伞式 header ,而不仅仅是 header ,请参阅 documentation .我还建议使用 modulemap 扩展,不确定 module.map 是否有所不同,但我记得在大多数项目中看到和使用过它。

Omar Abdelhafith 有一个邪恶的人 blog post在这件事上,它也有助于看到how others do it在处理这类事情时。

关于swift - 如何在 Swift 中使用静态库和模块映射文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46435278/

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