zoukankan      html  css  js  c++  java
  • UNITY 手游(安卓)如何使用C/C++代码

    解决方案:将C/C++代码编译成so供C#代码调用。

    SO生成工具:android studio,简称AS

    一,so 生成方法:

    1,菜单:File->New->New Project-> Native C++

    2,编写C++导出函数

    3,菜单:Build->Select Build Variants,选择构建类型 Debug或Release

    4, 菜单:Build->Make Project,等待构建完成,打开Project视图,cmake下可以找到生成的各种 so

    二,Unity中使用So

    1,将生成的SO文件放入到UNITY的Plugins文件夹中,然后设置如下(每个so文件对应设置,arm64-v8a设置为ARM64,armeabi-v7a设置为ARMV7,X86设置为X86)

    2,编写C#,调用SO

    using System;
    using System.Runtime.InteropServices;
    using UnityEngine;
    using UnityEngine.UI;
    
    public class testdll : MonoBehaviour
    {
        [DllImport("libnative-lib", CharSet = CharSet.Ansi)]
        public static extern int ABAdd(int a, int b);
        void Start()
        {
            var goText = GameObject.Find("infotext").GetComponent<Text>();
            goText.text = "准备调用
    ";
    
            int ret = -1;
            try
            {
                ret = ABAdd(3, 4);
            }
            catch (Exception e)
            {
                goText.text += $"DLL调用出错, {e}
    ";
            }
    
            if(ret > 0)
            {
                goText.text += $"调用完成, ret:{ret}
    ";
            }
    
        }
    }

    三,打包为APK,安装到手机上测试。

    因为SO文件只能在安卓上使用,所以在编辑器下运行会报 System.DllNotFoundException异常。

    同理,DLL文件在编辑器下可以被调用,在安卓上会报异常。

  • 相关阅读:
    Vue条件判断
    揭秘webpack plugin
    vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多
    npx 是什么?
    PAT 1100 Mars Numbers[难]
    PAT 1075 PAT Judge[比较]
    PAT 1083 List Grades[简单]
    PAT 1082 Read Number in Chinese[难]
    PAT 1135 Is It A Red-Black Tree[难]
    PAT 1127 ZigZagging on a Tree[难]
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/14126920.html
Copyright © 2011-2022 走看看