目前正在尝试在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:找不到架构arm64的符号
注意:我使用以下教程作为指导:http://blog.mousta.ch/post/140780061168
Why is SampleFunction() not found in __Internal ?
1 回答
代码很好 .
问题是关于.bundle中的切片 . 它是为i386 / x86_64而不是arm64 / armv7 / armv7s而构建的 .
要避免此问题,请检查目标上的以下选项:
建于"Generic iOS device"
构建设置:"Build Active Architecture Only : NO"
构建设置:"Architecture : Standard architecture"