gpt4 book ai didi

ios - 如何使用 module.modulemap 在 swift 框架中导入 objC 框架?

转载 作者:行者123 更新时间:2023-11-28 07:27:16 26 4
gpt4 key购买 nike

我正在创建一个 Swift 框架我必须在 Swift 框架内使用 Objective-C 框架。

我们不能使用桥接头,因为目标是 Swift 框架而不是 Swift 应用程序。相反,我使用 module.modulemap 文件:

module ObjSDK
{
header "ObjSDK.framework/Headers/classA.h"
export *
}

稍后在配置文件集中:

SWIFT_INCLUDE_PATHS = $(SRCROOT)/
MODULEMAP_PRIVATE_FILE = $(SRCROOT)/module.modulemap

然后建立成功。

之后尝试在swift框架下的swift类中使用classA时失败。

如果有任何遗漏的步骤或任何其他解决方案,请提出建议。

最佳答案

请再次检查以下步骤

  • Linked Frameworks 和 Libraries 下添加您的 Objective C 框架在你的 Swift 框架项目中
  • 然后为项目创建一个聚合目标,并在创建它时,将 Objective C 框架名称作为产品名称
  • 然后转到构建阶段并添加一个新运行脚本阶段
  • 脚本的内容应类似于以下内容。但是将 AnujaObjectiveCFramework 替换为您的 Objective C 框架名称

if [ -d "${BUILT_PRODUCTS_DIR}/AnujaObjectiveCFramework" ]; then echo "${BUILT_PRODUCTS_DIR}/AnujaObjectiveCFramework directory already exists, so skipping the rest of the script." exit 0 fi

mkdir -p "${BUILT_PRODUCTS_DIR}/AnujaObjectiveCFramework" cat << EOF > "${BUILT_PRODUCTS_DIR}/AnujaObjectiveCFramework/module.modulemap" module AnujObjcModule { header "${PROJECT_DIR}/AnujaObjectiveCFramework.framework/Headers/AnujaObjectiveCFramework.h" export * } EOF

  • 然后从方案列表中选择它来构建聚合框架
  • 现在您必须将该构建的框架作为您的 Swift 框架的目标依赖项包含在内。
  • 现在是您构建 Swift 框架的时候了。

其他详细信息:

  • 一旦您在原始项目中引用该 Swift 框架并以 dyld: Library not loaded: @rpath/ 错误结束,那么您必须修改您的 Swift 框架 Installation Directory 属性的值为 @EXECUTABLE_PATH/../Frameworks,然后将您的框架添加到 Swift 项目的 Frameworks 组中。

    <
  • 确保您需要在 Swift 框架内访问的类和函数根据您的需要具有publicopen访问标识符。

  • 确保在您的 Objective C 框架中的桥接 header 中添加必要的 header 文件。

关于ios - 如何使用 module.modulemap 在 swift 框架中导入 objC 框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56142105/

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