如何将iOS框架与Unity结合使用?

如何将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

我试图在Unity内部使用iOS本机框架,但我不知道如何使用

在我的C#脚本中,我调用一个本机函数,如下所示:

[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查看调用)

我不明白为什么,我也不知道我想做的是否可能。 救命!:)

谢谢,
Sennin

iOS框架必须放在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是的,请参见下面的答案;)