0

在构建我的 j2objc 集成项目时,我看到了很多错误,超过 170 个。

我认为 java j2re 库的位置正确,链接步骤说

-Llib/j2objcDist/lib -Llib/j2objcDist/lib/macosx -F/Users/username/Library/Developer/Xcode/DerivedData/MyApp-dkbwtvvwogkqknfpbozsmzhgrcei/Build/Products/Debug-iphonesimulator -Flib/j2objcDist/frameworks

使用 j2objc 构建时出现的错误

我看到的许多路径都包括完整的用户路径,但在 lib/j2objcDist/lib 路径上。

我的图书馆搜索路径是 ${PROJECT_DIR}/lib/j2objcDist/lib/

我的标题搜索路径是 ${PROJECT_DIR}/lib/j2objcDist/include ${DERIVED_FILES_DIR} ${PROJECT_DIR}/lib/j2objcDist/frameworks/JRE.framework/Headers ${PROJECT_DIR}/lib/j2objcDist/lib

我的框架搜索路径是 ${PROJECT_DIR}/lib/j2objcDist/frameworks

据我所知,我已经复制了 j2objc.org 网站上可用的演示应用程序中的设置。

关于尝试什么或在哪里解决这个问题的任何建议都会很棒。

4

2 回答 2

0

如果有一个 -ljre_emul 标志和一个有效的 -L 路径到该库,那么问题很可能是使用来自一个 J2ObjC 版本的翻译器和来自不同版本的库。J2ObjC 是一个编译器,它生成的文件需要被视为临时构建工件,而不是永久源文件。如果您的项目保存已翻译的 .m 和 .h 文件,那么每次使用新发行版时,都需要使用新翻译更新所有 Java 源代码。

于 2016-05-13T14:19:46.110 回答
0

看起来您已经正确设置了在哪里可以找到库,但没有告诉链接器包含任何库。在其他链接器标志中,设置“-ljre_emul”(或“-l jre_emul”)以告诉链接器包含 JRE 仿真库。

这将修复您列出的所有错误,但如果您使用其他库,那么它们需要单独的 -l 标志。例如,如果您使用任何 Google Guava 类,则还需要指定“-lguava”。

链接器通过获取每个 -l 参数并将其转换为库名称(在本例中为“lib”+arg“+“.a”或 libjre_emul.a)来查找库。然后检查每个 -L 路径以查找此文件,因此该库应与“ls ${PROJECT_DIR}/lib/j2objcDist/lib/libjre_emul.a”一起列出(当然要替换实际的项目目录)。

于 2016-05-13T14:15:48.763 回答