我正在创建一个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
时,失败了。
如果有任何遗漏的步骤或任何其他解决方案,请提出建议。
答案 0 :(得分:0)
请再次仔细检查以下步骤
如果[-d“ $ {BUILT_PRODUCTS_DIR} / AnujaObjectiveCFramework”];然后回声 “ $ {BUILT_PRODUCTS_DIR} / AnujaObjectiveCFramework目录已经 存在,因此跳过脚本的其余部分。” exit 0 fi
mkdir -p“ $ {BUILT_PRODUCTS_DIR} / AnujaObjectiveCFramework”猫 << EOF> “ $ {BUILT_PRODUCTS_DIR} /AnujaObjectiveCFramework/module.modulemap” 模块AnujObjcModule {标头 “ $ {PROJECT_DIR} /AnujaObjectiveCFramework.framework/Headers/AnujaObjectiveCFramework.h” 导出*} EOF
一旦您在原始项目中引用了Swift框架并以 dyld结尾:库未加载:@rpath / 错误,则必须进行修改您的Swift框架安装目录属性,其值为 @EXECUTABLE_PATH /../ Frameworks ,然后将您的框架添加到Swift项目的Frameworks组中。
请确保您需要在Swift框架内访问的类和函数具有 public 或 open 访问标识符,具体取决于您的需求。
确保在Objective C框架的桥接头中添加必要的头文件。