【问题标题】:CodenameOne "Undefined symbols" error when adding native library添加本机库时出现 CodenameOne “未定义符号”错误
【发布时间】:2018-06-18 12:32:10
【问题描述】:

我正在尝试将 Honeywell Captuvo iOS 库作为本机库添加到我的 CodenameOne 项目中。我已经完成了“生成本机访问”过程,并将 .a 库放在了 native/ios 目录中。但是,当我发送要构建的应用程序时,它会返回错误:

架构 arm64 的未定义符号:

“_OBJC_CLASS_$_EAAccessoryManager”,引用自: libCaptuvoSDK.a(CaptuvoReal.o) 中的 objc-class-ref

非常感谢

【问题讨论】:

    标签: native codenameone


    【解决方案1】:

    重读错误消息,我似乎错过了一个关键细节。您需要将ExternalAccessory.framework 添加到您的项目中。为此,您需要定义构建提示:ios.add_libs=ExternalAccessory.framework

    原答案如下:

    .a 库的名称是否以小写单词 lib 开头,并且它实际上是否以 .a 结尾。如果不确保重命名它,使其遵守这些约束。

    假设两者都正常,您将需要验证库在这种情况下确实具有所需的架构 arm64。

    这在这个问题中有解释:How to check if a static library is built for 64-bit?

    我只会使用第二个建议:file libFileName.a

    它应该在支持的架构列表中包含 arm64。

    【讨论】:

    • 您好,是的,该库称为 libCaptuvoSDK.a,因此符合这些约束。感谢“file”命令指针,我已经运行了它,它列出了这个库的四种架构:armv7、i386、x86_64 和 arm64,所以看来我有必要的架构?
    • 好的,我根据这个修改了我的答案
    猜你喜欢
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2014-05-22
    相关资源
    最近更新 更多