加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Unity iOS – 无法从.Bundle导入函数

发布时间:2020-12-14 17:58:20 所属栏目:百科 来源:网络整理
导读:目前正在尝试在Unity上为iOS框架创建一个包装器. 我制作了一个.bundle,包含基本的Objective-c代码: sample.h: #import Foundation/Foundation.hextern "C"{ void SampleFunction(); // this is going to call already bridged swift or objc code} sample.
目前正在尝试在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中的“Assets / Plugins / 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: symbol(s) not found for architecture arm64

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

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

解决方法

代码很好.

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

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

>构建在“通用iOS设备”上>构建设置:“仅构建活动架构:否”>构建设置:“架构:标准架构”

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读