架构 arm64 的 J2ObjC 未定义符号

J2ObjC undefined symbols for architecture arm64

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

我在 .o 文件上使用了 lipo -info,我得到了这个 "architecture: x86_64"。这是否意味着那些 objc 文件不适合 运行 在 arm64 架构上,如果是这样,我该如何解决这个问题?有没有我可以用来为 arm64 生成文件的标志?

我之前遇到的错误是 "ARC forbids explicit message" 我通过向所有与此错误相关的编译源添加编译器标志 -fno-objc-arc 解决了这个问题.这个解决方案安全吗?

要为 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,运行 j2objc 及其 -use-arc 标志。但是,不要使用 -fno-objc-arc 编译这些生成的文件,因为当您的应用程序使用完这些对象时,它们不会被释放。