【问题标题】:How to add files to Xcode project? (writing Unity plugin)如何将文件添加到 Xcode 项目? (编写 Unity 插件)
【发布时间】:2012-08-24 11:11:34
【问题描述】:

我敢打赌我的问题是非常基本的,所以请原谅我对 Xcode 不是很熟悉,因为我在 Unity 工作并为我们的 iOS 项目使用现成的插件,所以直到现在才真正需要深入研究 Xcode .

我想编写一个非常基本的自定义插件,但无法让 Xcode 接受它。我按照 Unity 页面上的教程进行操作,并将我的 .h 和 .m 文件添加到 Assets / Plugins / iOS,其中(如教程所述)它们将自动合并到 Xcode 中。

构建后,Xcode 抛出两个错误: *“架构 armv7 的未定义符号: “__XY”,引用自: __Z19RegisterMonoModulesv 在 RegisterMonoModules.o"* armv6 也是如此。

正如我在这里看到的类似问题,这是因为文件没有添加到 Xcode 项目中,尽管事实上它们应该是自动添加的。在 Xcode 中,我可以在 Project Navigator 中看到我的两个文件。我还在 Build Phases 列表中看到了我的 .mm 文件。

有什么问题?

【问题讨论】:

  • 您在项目导航器(XCode 左侧的部分)中看到文件了吗?
  • 尝试将您的构建设置限制为仅构建 armv7。构建过程开始时您是否已连接设备?
  • 除了 Compile Sources 下列出的 .m 文件(在 Build Phases 下),如果有任何库必须与此插件一起使用,则在 Build Phases --> Link 下列出带有库的二进制文件?我的猜测是 RegisterMonoModules.o 位于您的 .h .m 文件所需的二进制文件/库之一中

标签: xcode plugins unity3d undefined-symbol


【解决方案1】:

看起来您遇到了链接器错误。如果你的文件出现在 XCode 和 Build Phase 列表中,那么让你的 #include 语句都井井有条。

【讨论】:

  • 哎呀,我知道这很明显...... :) 我必须包含 System.Runtime.InteropServices 吗?
  • 现在当我查看我的文件时,我发现我已经在我的 binder 类中包含了 System.Runtime.InteropServices。我还应该导入什么?
  • 很难说...RegisterMonoModules 与您的其他标题相比在哪里?
  • 我昨天能够解决这个问题,但问题是我缺少将东西绑定在一起的 .mm 文件(我遵循的是我购买的插件方案),所以我不好。
【解决方案2】:

我遇到了同样的问题,将源文件添加到 xcode 项目。由于没有软件可以在不点击一些色彩鲜艳的界面的情况下完成这项工作,我开始了一个小项目来手动添加文件(CLI):XCodeControl。这是一个简单的 macos 程序,应该可以正常工作,包括文档。

【讨论】:

    猜你喜欢
    • 2019-12-17
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多