Unity iOS-无法从.Bundle导入功能

时间:2018-06-22 13:05:56

标签: c# ios xcode unity3d wrapper

当前尝试在Unity上为iOS框架创建包装器。

我制作了一个.bundle,其中包含基本的Objective-C代码:

sample.h:

#import <Foundation/Foundation.h>

extern "C"
{
    void SampleFunction(); // this is going to call already bridged swift or objc code
}

sample.mm:

#import "Sample.h"
#import <SDK/SDKFunctions.h>

void SampleFunction()
{

    // my sweet functions calls

}

SDK作为.framework包含在捆绑包中(“链接的框架和库”中的引用)。捆绑包目标是iOS。

捆绑软件成功构建。

该捆绑软件放置在Unity中的“资产/插件/ iOS”下,分别标记为“ iOS”和“添加到嵌入式二进制文件”

然后,在Unity中,有一个简单的C#脚本调用SDK函数:

sample.cs

public class BundleImportSample : MonoBehaviour {


    #if UNITY_IOS
        [DllImport("__Internal")]
        private static extern void SampleFunction();
    #endif
        void Start()
        {
    #if UNITY_IOS
            SampleFunction();
    #endif
        }
    }

当我在编辑器中测试此代码时,出现以下错误:

  

EntryPointNotFoundException:SampleFunction

如果我在iOS上生成生成的项目,则会遇到类似的问题:

  

ld:体系结构arm64找不到符号

注意:我使用以下教程作为指南:http://blog.mousta.ch/post/140780061168

为什么在__Internal中找不到SampleFunction()?

1 个答案:

答案 0 :(得分:6)

代码很好。

问题与.bundle中的切片有关。它是为i386 / x86_64而不是arm64 / armv7 / armv7s而构建的。

为避免此问题,请在目标上检查以下选项:

  • 在“通用iOS设备”上构建
  • 构建设置:“仅构建活动体系结构:否”
  • 构建设置:“体系结构:标准体系结构”