objective-c - 在 Unity iOS 中使用 swift 静态库
问题描述
我一直在尝试将我的 Unity 游戏与我在 Github 上找到的 iOS 静态库集成。该库在 Swift 中,但是,我分叉了该库,并提供了从 C# 代码进行调用所需的 Objective-C 绑定。
我的静态库在产品选项卡下的 xCode 项目中可用。为了在 Unity 中使用它,我将生成的库从“Reveal in file explorer”下的可用目录复制粘贴到 Unity。我把我的库放在插件目录中。
当我通过 Unity 解决方案生成的 iOS 模拟器上运行我的游戏时,我收到一个错误:
2020-11-02 13:56:43.450062+0100 NewUnityProject[4357:59213] Error loading /Users/user/Library/Developer/CoreSimulator/Devices/4D7307D5-D320-4AEB-A0DE-581C61CB3E14/data/Containers/Bundle/Application/1C4440FF-C7C6-486B-ADC8-F8A794A83CD9/NewUnityProject.app/Frameworks/UnityFramework.framework/UnityFramework: dlopen(/Users/user/Library/Developer/CoreSimulator/Devices/4D7307D5-D320-4AEB-A0DE-581C61CB3E14/data/Containers/Bundle/Application/1C4440FF-C7C6-486B-ADC8-F8A794A83CD9/NewUnityProject.app/Frameworks/UnityFramework.framework/UnityFramework, 265): Symbol not found: _$s10Foundation3URLVMn
Referenced from: /Users/user/Library/Developer/Xcode/DerivedData/Unity-iPhone-cwkdvrbwlxwbfzbpzacumxcttcmy/Build/Products/ReleaseForRunning-iphonesimulator/UnityFramework.framework/UnityFramework
Expected in: flat namespace
in /Users/user/Library/Developer/Xcode/DerivedData/Unity-iPhone-cwkdvrbwlxwbfzbpzacumxcttcmy/Build/Products/ReleaseForRunning-iphonesimulator/UnityFramework.framework/UnityFramework
2020-11-02 13:56:43.473282+0100 NewUnityProject[4357:59213] Error loading /Users/user/Library/Developer/CoreSimulator/Devices/4D7307D5-D320-4AEB-A0DE-581C61CB3E14/data/Containers/Bundle/Application/1C4440FF-C7C6-486B-ADC8-F8A794A83CD9/NewUnityProject.app/Frameworks/UnityFramework.framework/UnityFramework: dlopen(/Users/user/Library/Developer/CoreSimulator/Devices/4D7307D5-D320-4AEB-A0DE-581C61CB3E14/data/Containers/Bundle/Application/1C4440FF-C7C6-486B-ADC8-F8A794A83CD9/NewUnityProject.app/Frameworks/UnityFramework.framework/UnityFramework, 265): Symbol not found: _$s10Foundation3URLVMn
Referenced from: /Users/user/Library/Developer/Xcode/DerivedData/Unity-iPhone-cwkdvrbwlxwbfzbpzacumxcttcmy/Build/Products/ReleaseForRunning-iphonesimulator/UnityFramework.framework/UnityFramework
Expected in: flat namespace
in /Users/user/Library/Developer/Xcode/DerivedData/Unity-iPhone-cwkdvrbwlxwbfzbpzacumxcttcmy/Build/Products/ReleaseForRunning-iphonesimulator/UnityFramework.framework/UnityFramework
为了逐步验证 Unity 支持,我创建了一个 Objective-c 静态库 - Untiy 能够调用库并且我没有收到错误。之后,我向我的 Objective-C 库添加了 swift 支持,然后我再次遇到了平面命名空间的问题:
2020-11-02 13:37:12.848568+0100 NewUnityProject[3034:44789] Error loading /Users/user/Library/Developer/CoreSimulator/Devices/4D7307D5-D320-4AEB-A0DE-581C61CB3E14/data/Containers/Bundle/Application/4E2199BA-7743-484E-AD01-636C4296BE85/NewUnityProject.app/Frameworks/UnityFramework.framework/UnityFramework: dlopen(/Users/user/Library/Developer/CoreSimulator/Devices/4D7307D5-D320-4AEB-A0DE-581C61CB3E14/data/Containers/Bundle/Application/4E2199BA-7743-484E-AD01-636C4296BE85/NewUnityProject.app/Frameworks/UnityFramework.framework/UnityFramework, 265): Symbol not found: _$sBOWV
Referenced from: /Users/user/Library/Developer/Xcode/DerivedData/Unity-iPhone-cwkdvrbwlxwbfzbpzacumxcttcmy/Build/Products/ReleaseForRunning-iphonesimulator/UnityFramework.framework/UnityFramework
Expected in: flat namespace
in /Users/user/Library/Developer/Xcode/DerivedData/Unity-iPhone-cwkdvrbwlxwbfzbpzacumxcttcmy/Build/Products/ReleaseForRunning-iphonesimulator/UnityFramework.framework/UnityFramework
2020-11-02 13:37:12.874398+0100 NewUnityProject[3034:44789] Error loading /Users/user/Library/Developer/CoreSimulator/Devices/4D7307D5-D320-4AEB-A0DE-581C61CB3E14/data/Containers/Bundle/Application/4E2199BA-7743-484E-AD01-636C4296BE85/NewUnityProject.app/Frameworks/UnityFramework.framework/UnityFramework: dlopen(/Users/user/Library/Developer/CoreSimulator/Devices/4D7307D5-D320-4AEB-A0DE-581C61CB3E14/data/Containers/Bundle/Application/4E2199BA-7743-484E-AD01-636C4296BE85/NewUnityProject.app/Frameworks/UnityFramework.framework/UnityFramework, 265): Symbol not found: _$sBOWV
Referenced from: /Users/user/Library/Developer/Xcode/DerivedData/Unity-iPhone-cwkdvrbwlxwbfzbpzacumxcttcmy/Build/Products/ReleaseForRunning-iphonesimulator/UnityFramework.framework/UnityFramework
Expected in: flat namespace
in /Users/use/Library/Developer/Xcode/DerivedData/Unity-iPhone-cwkdvrbwlxwbfzbpzacumxcttcmy/Build/Products/ReleaseForRunning-iphonesimulator/UnityFramework.framework/UnityFramework
我一直在尝试设置不同的 xCode 标志,例如“始终嵌入 Swift 标准库”或“启用模块”,但仍然无法在 iOS 模拟器上运行我的游戏。
任何提示都非常感谢。
解决方案
推荐阅读
- python-2.7 - Python 码头工人 SDK
- c# - c# Linq 表达式返回复选框的选定值
- javascript - 添加我的应用 ID 和单元 ID 后,广告没有出现
- android - 如果使用具有链请求的唯一工作,则 WorkStatus 为 BLOCKED
- php - URL 重写内部服务器错误
- python - 如何从 OpenCV 图像而不是 numpy 数组中获取 TIFF 字节流?
- powershell - Powershell,从目录中的前 100 个文件创建存档
- java - Java 8+流:检查我的对象实例的两个字段的列表是否正确
- bash - 有什么作用。/opt/pat/staging/config/VARIABLES>>/dev/null 做什么?
- typescript - Visual Studio 2017 中的 Typescript d.ts 文件