【问题标题】:Build error of Google Cardboard SDK for Unity Demo in XcodeGoogle Cardboard SDK for Unity Demo 在 Xcode 中的构建错误
【发布时间】:2014-12-12 09:58:47
【问题描述】:

我正在尝试在 Xcode 中构建 Google Cardboard SDK for Unity 的 DemoScene 以在我的 iPhone 6 Plus 上运行它。

但它不起作用,虽然我可以让它在 Unity 和 Android 上运行。

有人试过吗? 非常欢迎任何建议。

错误信息如下。

Undefined symbols for architecture armv7:
  "_InitFromUnity", referenced from:
      RegisterMonoModules() in RegisterMonoModules.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

【问题讨论】:

    标签: ios xcode unity3d google-cardboard


    【解决方案1】:

    虽然 Google Cardboard Unity 插件确实不支持 iOS,但它仍然不会编译失败。问题似乎是对实际未包含在包中的 DLL 的一些杂散引用(可能由 Google 团队内部使用?)。

    我有一个项目,我想要适用于 Android 的 Cardboard 插件,但还需要支持其他平台(使用其他输入模式),我破解了一个这样的解决方案:

    在 Cardboard/Scripts/Cardboard.cs 中,更改这组行...

    #if UNITY_IPHONE && !UNITY_EDITOR
      [DllImport("__Internal")]
    #else
      [DllImport("RenderingPlugin")]
    #endif
      private static extern void InitFromUnity(int textureID);
    

    ...到这个...

    #if UNITY_IPHONE && !UNITY_EDITOR
        private static void InitFromUnity(int textureID) {}
    #else
        [DllImport("RenderingPlugin")]
        private static extern void InitFromUnity(int textureID);
    #endif
    

    最终结果应该是一个不连接到 DLL 的虚拟函数,而不是连接到不存在的 DLL 的外部函数。 Cardboard 插件仍然无法在 iOS 上运行,但您可以再次编译,而无需将其从项目中完全删除。

    也许将来 Google 可以纠正这个问题(不确定报告它的适当位置在哪里......?)甚至添加 iOS 支持(如果我们幸运的话)。

    干杯。

    【讨论】:

      【解决方案2】:

      只需使用 Durovis Unity 插件即可。它与 iOS 完美配合。只需要注释掉引用一些 Android 特定内容的两行。只需构建一个运行,您就会看到必须注释掉哪些行。

      您可以在这里获取:http://www.durovis.com/sdk.html

      【讨论】:

        【解决方案3】:

        Google Cardboard SDK(Unity 插件)仅适用于 Android。

        【讨论】:

          猜你喜欢
          • 2016-05-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-19
          • 1970-01-01
          • 1970-01-01
          • 2018-12-08
          • 1970-01-01
          相关资源
          最近更新 更多