架构arm64的J2ObjC未定义符号

时间:2020-02-03 14:13:14

标签: objective-c xcode architecture arm64 j2objc

我正在尝试使用j2objc将Java库转换为Objective-c,并将生成的objc文件包含到我的XCode项目中。我设法生成了objc文件,但是XCode给了我以下错误:https://i.stack.imgur.com/QX3zF.png

我在.o文件上使用了lipo -info,并且得到了“体系结构:x86_64” 。这是否意味着这些objc文件不是要在arm64体系结构上运行,如果可以,该如何解决?我可以使用任何标志为arm64生成文件吗?

我之前遇到的错误是“ ARC禁止显式消息” ,我通过向与该错误相关的所有编译源中添加了一个编译器标志-fno-objc-arc来解决了此问题。这个解决方案安全吗?

1 个答案:

答案 0 :(得分:0)

要为arm64进行编译,需要-arch arm64-isysroot IPHONE_SDK_DIRECTORY标志。要在您的系统上找到IPHONE_SDK_DIRECTORY,请运行xcrun -sdk iphoneos --show-sdk-path

没有关于J2ObjC的特定内容,它们是正常的iOS标志,您可以在Xcode中成功编译Objective C文件的日志中找到它们,然后单击其右键以展开并显示所有使用的标志

默认情况下,J2ObjC不会生成ARC代码,因此-fno-objc-arc标志可以。如果您更喜欢ARC,请运行带有其-use-arc标志的j2objc。但是,请勿使用-fno-objc-arc编译这些生成的文件,因为当您的应用程序完成处理后,这些对象将不会被释放。