当前尝试在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()?
答案 0 :(得分:6)
代码很好。
问题与.bundle中的切片有关。它是为i386 / x86_64而不是arm64 / armv7 / armv7s而构建的。
为避免此问题,请在目标上检查以下选项: