1

我正在尝试在 Xcode 中为 Unity 构建 Google Cardboard SDK 的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)
4

3 回答 3

2

虽然 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 上运行,但您可以再次编译,而无需将其从项目中完全删除。

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

干杯。

于 2014-12-30T18:25:14.277 回答
1

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

你可以在这里得到它:http ://www.durovis.com/sdk.html

于 2015-02-16T19:56:02.187 回答
0

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

于 2014-12-12T15:19:11.293 回答