繁体   English   中英

如何从unity3D C#代码中调用AC库

[英]How to call a c library from unity3D C# code

我是unity3D和C#(和IOS :)的新手,但需要让iPhone上的旧C库(.h和.a文件)正常工作。 我已经从统一文档中阅读了一些有关插件的信息,但是仍然对复杂的过程感到不知所措。 上师能给我讲出摆脱困境的正确方法吗? 谢谢!

通过此链接 这给出了制作适用于iOS的插件的想法。 如有疑问,请询问。

插件的实际示例

1)在Unity的plugins文件夹中创建一个名为AppControllerBinding.cs的C#文件,并按如下所示添加代码:

    using UnityEngine;
    using System.Collections;
    using System.Runtime.InteropServices;


    // All Objective-C exposed methods should be bound here
    public class AppControllerBinding
    {


    [DllImport("__Internal")]
    private static extern void _MyFunction(string myName);

    public static void MyFunction(string MyNameIN)
    {
            // Call plugin only when running on real device
          if( Application.platform == RuntimePlatform.IPhonePlayer )
             _MyFunction(MyNameIN);
    }

    }

2)将MyFunction()函数添加到Xcode内AppController.mm文件的底部,如下所示(在@end语句之后):

extern "C"
{
    void _MyFunction(const char* MyName)
    {
        NSString* s = [NSString stringWithUTF8String: MyName];
        [Self logName:s]; //<-----logName is method which takes string parameter
        printf_console("_MyFunction() called in Appcontroller.mm in Xcode.\n");
    }
}

3)当您想在Unity中使用AppController.mm的logName函数时,只需进行如下调用:

AppControllerBinding.MyFunction("Nick");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM