如何将iOS框架与Unity结合使用?
我试图在Unity内部使用iOS本机框架,但我不知道如何使用 在我的C#脚本中,我调用一个本机函数,如下所示:如何将iOS框架与Unity结合使用?,ios,frameworks,unity3d,Ios,Frameworks,Unity3d,我试图在Unity内部使用iOS本机框架,但我不知道如何使用 在我的C#脚本中,我调用一个本机函数,如下所示: [DllImport ("__Internal")] private static extern void writeHello(); void Start () { writeHello(); } 我将iOS框架拖动到我的项目中,如下所示: [DllImport ("__Internal")] private static exte
[DllImport ("__Internal")]
private static extern void writeHello();
void Start () {
writeHello();
}
我将iOS框架拖动到我的项目中,如下所示:
[DllImport ("__Internal")]
private static extern void writeHello();
void Start () {
writeHello();
}
但当我在iPad上部署应用程序时,xCode显示了以下错误:
架构armv7的未定义符号:“\u writeHello”,引用
发件人:
在RegisterMonoModules.o ld中找不到架构armv7的符号clang:错误:链接器命令失败,错误为
退出代码1(使用-v查看调用)
我不明白为什么,我也不知道我想做的是否可能。
救命!:)
谢谢,
SenniniOS框架必须放在xCode生成的项目中,而不是放在unity中 框架的函数必须包装在
extern“C”
块中(如图所示)
然后你就可以在C语言中使用它了#dllimport多亏了这篇文章找到了解决方案: 这样做:
void myWriteHello( void *test) {
[(id)test writeHello];
}
- (void) writeHello
{
NSLog(@"Hello World!");
}
从Unity调用my C函数,文档说位于Assets/Plugins/iOS文件夹中的所有扩展名为.a、.m、.mm、.C、.cpp的文件将自动合并到生成的Xcode项目中。文档还指出,当前不支持子文件夹,因此,在您的示例中,“framework helloUnity.framework”文件夹将被忽略 需要注意的是,.m文件默认为C样式绑定,而.mm文件默认为C++样式绑定。换句话说,除非像Heilo建议的那样使用
extern“C”
关键字,否则如果将函数放在.mm或.cpp文件中,将找不到它们
换言之,如果您将以下内容:
void writeHello() {}
在名为
Assets/Plugins/iOS/myTestFile.m
的文件中,您的代码应该可以编译。您已经在Xcode项目的任何类中编写了以下函数
外部“C”
{
-(无效)书面问候
{
}
}您好,谢谢您的回复。问题是我的writeHello函数是用objective-c本机语言编写的,所以我的writeHello文件是.m,我可以使用符号“extern”吗?你解决问题了吗?@Rajesh是的,请参见下面的答案;)