.so ndk unity3d_ndk unity - CSDN
  • 首先明白.so分为两种,一种是linux下的.so,一种是NDK下的.so;本文主要讲解加载后一种.so 先来了解如何生成.so; 1、建立jni文件夹,创建android.mk和main.cpp文件 .mk内容如下: LOCAL_PATH := $(call ...

    首先明白.so分为两种,一种是linux下的.so,一种是NDK下的.so;本文主要讲解加载后一种.so

    先来了解如何生成.so;

    1、建立jni文件夹,创建android.mk和main.cpp文件

    .mk内容如下:

    LOCAL_PATH := $(call my-dir)

    # compile VitClient.so
    include $(CLEAR_VARS)   

    LOCAL_MODULE    := libgame   //.so名称

    LOCAL_SRC_FILES := main.cpp //需要直接的.cpp/.c文件

    LOCAL_C_INCLUDES := $(LOCAL_PATH)/../include 

    include $(BUILD_SHARED_LIBRARY) 

    #include $(BUILD_STATIC_LIBRARY)

    .cpp 文件内容:
    extern "C"
    {
        int AddNum(int a,int b)
        {
            return a+b;
        }
    }

    2、在jni同级目录创建build_native.sh脚本

    内容如下:

    # set params
    NDK_ROOT_LOCAL=/Users/wuwuyuan/Desktop/android-sdk-macosx/android-ndk-r7b   //ndk 路径 设置成自己的
    # build
    # NDK 编译参数
    # V=1    显示编译详细信息
    # -B    强制重新编译
    $NDK_ROOT_LOCAL/ndk-build

    3、mac下命令行   执行 sh build_native.sh   结果如图:

    4、在unity中穿件android工程,新建Plugins/Android   将libgame.so 放在之下

    5、编辑C# 脚本:

    using System.Runtime.InteropServices;
    public class PluginImport : MonoBehaviour {

        [DllImport ("game")]  //省略掉lib前缀和.so 后缀
        private static extern int AddNum(int a,int b);
        
        void Start () {
            Debug.Log("wwwwwww:"+AddNum(1,1));
        }
    }

    6、在android设备上可以看到打印出 wwwwwww:2

    备注:必须在android真机或模拟器上能看到效果,在pc或mac上会报异常

    工程下载地址

     补充:如何在mac下用NDK编.so

        cd 到当前eclipse工程根目录,在根目录执行../android-ndk-r7b/ndk-build

    编译过程:Compile++ arm    : shadowmapping <= BaseGLSLProgram.cpp
    Compile++ arm    : shadowmapping <= bitmap.cpp
    Compile++ arm    : shadowmapping <= button.cpp
    Compile++ arm    : shadowmapping <= main.cpp
    Compile thumb  : android_native_app_glue <= android_native_app_glue.c
    StaticLibrary  : libandroid_native_app_glue.a
    Prebuilt       : libgnustl_static.a <= <NDK>/sources/cxx-stl/gnu-libstdc++/libs/armeabi/

    展开全文
  • unity3D 调用android .so

    2015-12-05 11:37:05
    首先明白.so分为两种,一种是linux下的.so,一种是NDK下的.so;本文主要讲解加载后一种.so 先来了解如何生成.so; 1、建立jni文件夹,创建android.mk和main.cpp文件 .mk内容如下: LOCAL_PATH := $(call my-dir) ...

    首先明白.so分为两种,一种是linux下的.so,一种是NDK下的.so;本文主要讲解加载后一种.so

    先来了解如何生成.so;

    1、建立jni文件夹,创建android.mk和main.cpp文件

    .mk内容如下:

    LOCAL_PATH := $(call my-dir)
    
    # compile VitClient.so
    include $(CLEAR_VARS)   
    
    LOCAL_MODULE    := libgame   //.so名称
    
    LOCAL_SRC_FILES := main.cpp //需要直接的.cpp/.c文件
    
    LOCAL_C_INCLUDES := $(LOCAL_PATH)/../include
    
    include $(BUILD_SHARED_LIBRARY)
    
    #include $(BUILD_STATIC_LIBRARY)
    
    .cpp 文件内容:
    extern "C"
    {
        int AddNum(int a,int b)
        {
            return a+b;
        }
    }

    2、在jni同级目录创建build_native.sh脚本

    内容如下:

    # set params
    NDK_ROOT_LOCAL=/Users/wuwuyuan/Desktop/android-sdk-macosx/android-ndk-r7b   //ndk 路径 设置成自己的
    # build
    # NDK 编译参数
    # V=1    显示编译详细信息
    # -B    强制重新编译
    $NDK_ROOT_LOCAL/ndk-build 


    3、mac下命令行   执行 sh build_native.sh   结果如图:


    4、在unity中穿件android工程,新建Plugins/Android   将libgame.so 放在之下

    5、编辑C# 脚本:

    using System.Runtime.InteropServices;
    public class PluginImport : MonoBehaviour {
    
        [DllImport ("game")]  //省略掉lib前缀和.so 后缀
        private static extern int AddNum(int a,int b);
       
        void Start () {
            Debug.Log("wwwwwww:"+AddNum(1,1));
        }
    }

    6、在android设备上可以看到打印出 wwwwwww:2

    备注:必须在android真机或模拟器上能看到效果,在pc或mac上会报异常

    工程下载地址

     补充:如何在mac下用NDK编.so

    cd 到当前eclipse工程根目录,在根目录执行../android-ndk-r7b/ndk-build

    编译过程:

    Compile++ arm    : shadowmapping <= BaseGLSLProgram.cpp
    Compile++ arm    : shadowmapping <= bitmap.cpp
    Compile++ arm    : shadowmapping <= button.cpp
    Compile++ arm    : shadowmapping <= main.cpp
    Compile thumb  : android_native_app_glue <= android_native_app_glue.c
    StaticLibrary  : libandroid_native_app_glue.a
    Prebuilt       : libgnustl_static.a <= <NDK>/sources/cxx-stl/gnu-libstdc++/libs/armeabi/

    原文地址:http://www.cnblogs.com/U-tansuo/archive/2013/04/02/unity3d_Plugin_android_so.html

    展开全文
  • Unity3d调用Android版so

    2017-08-16 14:44:30
    需要Android NDK工具包,下载地址为: https://developer.android.google.cn/ndk/downloads/index.html 下载后解压后即可使用。 (警告: 解压的路径不能带空格,最好都是英文路径)   添加ndk-build 指令的...

    C源码封装Android版函数库

    工具介绍

    需要Android NDK工具包,下载地址为:

    https://developer.android.google.cn/ndk/downloads/index.html

    下载后解压后即可使用。

    (警告: 解压的路径不能带空格,最好都是英文路径)

     

    添加ndk-build 指令的路径到path全局变量中

    测试安装成功,使用CMD窗口执行ndk-build,如下图结果说明安装配置成功

     

    程序编写

    test.h文件内容如下:

     

    test.cpp文件内容如下:

     

    编译配置脚本

    Android NDK需要编写两个脚本:Android.mk 和  Application.mk。

    Application.mk的内容如下:


    (注意:此文件尽量不要改动)

    Android.mk 文件内容如下:

    此文件中的LOCAL开头的变量都是AndroidNDK编译时会自动使用的,每个变量的意义参见变量的命名。LOCAL_MODULE 是生成的函数库名称。

     

    编译出函数库

    在CMD中执行编译指令结果如下:

    生成的所有的不同Android平台的函数库路径为:


    测试编译出的函数库正确性:

    将libtest.so 上传到linux系统下,执行指令如下图,表明函数库正常。

     

     

     

     

    Unity3D调用函数库

    Unity3D对于动态链接库的存放位置有规则说明,将网址:

    https://docs.unity3d.com/Manual/PluginInspector.html

     

    将libs目录复制到 Assets/Plugins/Android目录下。如果没有目录,手动创建出来。

    (注意:层次关系一定要如上图所示。我之前没有创建或复制libs目录,导致在Android系统上执行一直报错:system.dllnotfoundexception: test)

    如果配置成功,选中函数库文件时,会相应的展示inspector的CPU等平台配置信息。

     

     

    函数库调用测试代码如下:

     

    展开全文
  • so库应该放在Assets\Plugins\Android目录下而不是libs目录下。
    so库应该放在Assets\Plugins\Android目录下而不是libs目录下。
    
    展开全文
  • Unity3D研究院之Android NDK编译C/C++结合Unity实现本地数据共享 转载自: http://www.xuanyusong.com/archives/1129 作者: 雨松MOMO 2012年06月02日 于 雨松MOMO程序研究院 发表 开始本篇...
  • Unity C#调用so文件

    2020-05-28 17:53:23
    1.so源文件 1.1 NaviteCode.h #ifndef __NativeCode_H__ #define __NativeCode_H__ #if 0 #define EXPORT_DLL __declspec(dllexport) //导出dll声明 #else #define EXPORT_DLL #endif extern "C" { EXPORT_...
  • unity+ndk+android+.so+apk

    2019-04-22 17:35:31
    1. 安装NDK 解压下载后的文件夹,将文件夹路径添加到系统环境变量Path中 2. 编写文件 makeSo文件夹名称可以修改,但jni不要修改 Android.mk LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE :=...
  • 由于最近进入了公司,手头上的...关于在unity上使用C++的代码需要用到SO文件了,这就像Cocos上使用C++编写的游戏一样可以运行在Android上也同样是使用了so文件。 首先在Android上使用so文件我们分为下面几个步骤...
  • 在Android环境下,调用so库 Windows编 1、生产so库 用的代码和Windows篇的产不多,不过稍作修改,不需要导出dll了, NaviteCode.h #ifndef __NativeCode_H__ #define __NativeCode_H__ #if 0 #define EXPORT_...
  • 本文主要是在Android环境下,调用so库,下面就来看下调用动态库so的步骤。一、生产so库1.用的代码和Windows篇的产不多,不过稍作修改,不需要导出dll了,NaviteCode.hAخA 1 #ifndef __NativeCode_H__2 #define __...
  • 其实不是那样的,得相信自己,如果是Unity3d开发的,可以多去官方的论坛查找问题。 这也是我第一次在Unity3d中使用Sqlite来作为配置表文件,当然了,SQLite有优秀的读写性能。如果这个项目用着稳定的话,我会一直...
  • 首先明白.so分为两种,一种是linux下的.so,一种是NDK下的.so;本文主要讲解加载后一种.so 先来了解如何生成.so; 1、建立jni文件夹,创建android.mk和main.cpp文件 .mk内容如下: LOCAL_PATH := $(call my-dir)# ...
  • Unity3d 是基于 Mono的,我们平时写的 C# 脚本都被编译到了 Assembly-CSharp.dll ,然后 再由 Mono 来加载、解析、然后执行。Mono 加载 Assembly-CSharp.dll 的时候就是读取文件到内存中,和平时读取一个 游戏资源 ...
  • 这是我的第一篇博文,在我刚开始实现本文功能是的,感悟真的是挺深的,为了给大家分享我的探索经验也为了以后自己方便查阅,写下此篇博文学习一种新的东西,一定要从最简单的开始,把一切需要实现的功能做到最容易...
  • Unity3D研究院之Android NDK编译C/C++结合Unity实现本地数据共享(二十八)  雨松MOMO 【Unity3D研究院之游戏开发】 围观13237次 37条评论 编辑日期:2012-08-09 字体:大 中 小  开始本...
  • Linux下编译Unity mono源码的libmonobdwgc-2.0.so 1 编译简介 我这里编译mono.so目的是为了安卓做dll热更(也可dll加密),顺便补充几个概念(来源:https://www.cnblogs.com/lijiajia/p/7822571.html) 1.1 ...
  •  Android Java调用libtwolib-first.a 输入: 新建jni目录,放入libtwolib-first.a、first.h...libtwolib-second.so(打包进apk了)、Caculator.apk 过程: Android.mk内容如下: LOCAL_PATH := $(call my-di
  • 大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei。最近博主发现博主的文章被很多的网站(如游戏蛮牛)等非法转载,在转载的过程中博主原来的文章出处和链接均被去掉,更让博主觉得...
1 2 3 4 5 ... 16
收藏数 311
精华内容 124
关键字:

.so ndk unity3d