在构建我的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
我看到的很多路径都包含完整的用户路径,但是在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网站上提供的演示应用中的设置,据我所知。
有关尝试尝试或在何处修复此问题的任何建议都会很棒。
答案 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源都需要使用新的翻译进行更新。