【问题标题】:Getting "duplicate symbol _main" while embedding unity in existing swift project在现有的 swift 项目中嵌入统一时获取“重复符号_main”
【发布时间】:2019-12-03 13:32:41
【问题描述】:

我正在尝试将统一项目嵌入到现有的 swift 项目中。 我收到以下错误:

重复符号_main: /Users/vikasroy/Library/Developer/Xcode/DerivedData/CaptainCreek-fohhjxvaawusmeeuopzkmqmiplys/Build/Intermediates.noindex/CaptainCreek.build/Debug-iphoneos/CaptainCreek.build/Objects-normal/arm64/main.o /Users/vikasroy/Library/Developer/Xcode/DerivedData/CaptainCreek-fohhjxvaawusmeeuopzkmqmiplys/Build/Intermediates.noindex/CaptainCreek.build/Debug-iphoneos/CaptainCreek.build/Objects-normal/arm64/AppDelegate.o ld:架构 arm64 的 1 个重复符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

知道问题出在哪里吗?

当我从 AppDelegate 文件中删除 @UIApplicationMain 注释时,它可以工作,但是 Unity Player 在启动时直接打开。

我的应用有一个不同的主屏幕。

【问题讨论】:

    标签: ios swift unity3d


    【解决方案1】:

    Unity 生成的代码在文件 main.mm 中包含另一个 main 方法。必须重命名此方法才能解决错误。 虽然您将需要生成的 main 中的代码来初始化 Unity Player。

    此外,您还需要更多步骤才能成功嵌入统一项目:
    - 您需要链接所有必需的库和
    - 在您的 AppDelegate 中保存 UnityAppController 的实例,并通过 UnityAppController.h 访问它

    在 GitHub 上有一个项目,所有这些修改都是自动化的:https://github.com/jiulongw/swift-unity

    【讨论】:

    • 我可以在重命名 main.mm 后成功构建。但是我的应用程序现在默认以统一方式打开。我有一个不同的主屏幕。知道如何实现这一目标吗?
    • 您是否将@UIApplicationMain 添加到您的AppDelegate 中?然后它应该从你的 ViewController 开始。有关如何从 AppDelegate 中启动 UnityPlayer 的示例,请查看 swift-unity 项目:github.com/jiulongw/swift-unity
    • 是的,我已将 @UIApplicationMain 添加到 AppDelegate。当我启动应用程序时,我可以看到我的自定义主屏幕片刻,然后统一播放器出现在它的顶部。
    • 你写的是你重命名了文件main.mm,但是方法应该重命名。如果这没有帮助,则很难在没有看到一些代码的情况下进行分析。
    • 这可能是 Unity 2019 的问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多