0

我用由 j2objc 翻译的 ObjectiveC 代码创建了一个 swift 框架。

我添加了 java 文件来编译源代码,并使用以下设置:

GENERATED_FILES_DIR = "${SRCROOT}/已生成";

HEADER_SEARCH_PATHS = "${J2OBJC_HOME}/frameworks/JRE.framework/Headers" "${GENERATED_FILES_DIR}" "${J2OBJC_HOME}/include" $(inherited);

LIBRARY_SEARCH_PATHS = ${J2OBJC_HOME}/lib;

OTHER_LDFLAGS = -ljre_emul

CLANG_ENABLE_OBJC_ARC = 否

我得到了错误:

包括“J2ObjC_header.h”>>在框架模块'XXXXX'中包含非模块化头文件

然后我执行以下操作:

CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = 是

错误仍然存​​在。

我链接“JRE.framework”并设置 HEADER_SEARCH_PATHS

错误仍然存​​在。

如何解决?

4

1 回答 1

0

你还想设置DEFINES_MODULE = NO;

除此之外,您不需要"${J2OBJC_HOME}/include"inHEADER_SEARCH_PATHS并且您也可以删除LIBRARY_SEARCH_PATHS = ${J2OBJC_HOME}/lib; OTHER_LDFLAGS = -ljre_emul;,因为您现在使用的是 JRE 框架。

如果您正在翻译.java没有--no-package-directories标志的源并且想要保留目录结构,那么您还需要执行以下操作:

  1. 将生成的文件添加为 Xcode 中的文件夹引用
  2. 将它们从Copy Bundle Resources阶段中移除
  3. 将文件夹放在阶段Public部分Headers
  4. 添加新Run Scrip阶段以.mHeaders目录中删除文件: find "$TARGET_BUILD_DIR/$PUBLIC_HEADERS_FOLDER_PATH" -name "*.m" -exec rm -f {} \;
  5. 现在您可以使用#include <your-framework-name/path/to/header/Header.h>
于 2016-07-22T12:16:32.413 回答