"参考"使用j2objc进行构建时出错

时间:2016-05-13 09:02:17

标签: java ios j2objc

在构建我的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

Errors seen when building with 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网站上提供的演示应用中的设置,据我所知。

有关尝试尝试或在何处修复此问题的任何建议都会很棒。

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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