Unity与 SO 交互 ☀️| .so文件(动态链接库 ) 基础知识科普

简介: 📢前言因为最近用到了so文件相关内容所以来学习一下.so文件相关的知识,正好来写博客也当是记录并分享一些知识最终目的是在Unity中与so文件进行交互处理,但是本篇文章需要先对so文件有一个基本的认识这样在后面交互流程中也能 加深一点理解

📢前言

因为最近用到了so文件相关内容


所以来学习一下.so文件相关的知识,正好来写博客也当是记录并分享一些知识


最终目的是在Unity中与so文件进行交互处理,但是本篇文章需要先对so文件有一个基本的认识


这样在后面交互流程中也能 加深一点理解


🎬SO文件

SO文件概述


遇到一个之前并没有过多接触过的新知识该怎么办?


那肯定是先在百度、CSDN等网上平台搜一下呀,正常学习思路都是这样吧~


所以先来看一下百度百科对于.so文件的描述


SO文件是Linux下共享库文件,即编译好的可以供其他程序使用的代码和数据。


它的文件格式被称为ELF文件格式,节约资源,加快速度,代码升级简化。


由于Android操作系统的底层基于Linux系统,所以SO文件可以运行在Android平台上。


Android系统也同样开放了C/C++接口供开发者开发Native程序。


so文件特点


so文件与dll文件类似

so文件就是常说的动态链接库,都是C或者C++编译出来的

Linux下的so文件时不能直接运行的,一般来讲,.so文件称为共享库。

so文件的使用方法


so文件跟.dll文件差不多,因为在Unity里面.so文件是通过: [DllImport("DLLName")]方式来调用的


可能一开始还以为这是调用dll文件的方法,结果却是调用so文件的方法~


至于具体怎样调用交互,在后面的文章会讲到!


动态库的编译

一般是将一个头文件so_test.h和三个.c文件 test_a.c、test_b.c、test_c.c ,将这几个文件编译成一个动态库:libtest.so

命令:$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so 不用该标志外部程序无法连接。相当于一个可执行文件。

动态库的链接

这里有个程序源文件test.c与 动态库 libtest.so 链接生成执行文件 test:

命令:$ gcc test.c -L. -ltest -o test

命令:$ ldd test执行test,可以看到它是如何调用动态库中的函数的。

💬总结

本章节对so文件只是做了一个简单的概述


后面文章开始介绍一下 怎样生成一个so文件 和 怎样在Android和Unity中调用这个so文件进行交互 使用


相关文章
|
3月前
|
前端开发 图形学 开发者
【独家揭秘】那些让你的游戏瞬间鲜活起来的Unity UI动画技巧:从零开始打造动态按钮,提升玩家交互体验的绝招大公开!
【9月更文挑战第1天】在游戏开发领域,Unity 是最受欢迎的游戏引擎之一,其强大的跨平台发布能力和丰富的功能集让开发者能够迅速打造出高质量的游戏。优秀的 UI 设计对于游戏至关重要,尤其是在手游市场,出色的 UI 能给玩家留下深刻的第一印象。Unity 的 UGUI 系统提供了一整套解决方案,包括 Canvas、Image 和 Button 等组件,支持添加各种动画效果。
183 3
|
3月前
|
vr&ar 图形学 API
Unity与VR控制器交互全解:从基础配置到力反馈应用,多角度提升虚拟现实游戏的真实感与沉浸体验大揭秘
【8月更文挑战第31天】虚拟现实(VR)技术迅猛发展,Unity作为主流游戏开发引擎,支持多种VR硬件并提供丰富的API,尤其在VR控制器交互设计上具备高度灵活性。本文详细介绍了如何在Unity中配置VR支持、设置控制器、实现按钮交互及力反馈,结合碰撞检测和物理引擎提升真实感,助力开发者创造沉浸式体验。
197 0
|
3月前
|
图形学 开发者 UED
Unity游戏开发必备技巧:深度解析事件系统运用之道,从生命周期回调到自定义事件,打造高效逻辑与流畅交互的全方位指南
【8月更文挑战第31天】在游戏开发中,事件系统是连接游戏逻辑与用户交互的关键。Unity提供了多种机制处理事件,如MonoBehaviour生命周期回调、事件系统组件及自定义事件。本文介绍如何有效利用这些机制,包括创建自定义事件和使用Unity内置事件系统提升游戏体验。通过合理安排代码执行时机,如在Awake、Start等方法中初始化组件,以及使用委托和事件处理复杂逻辑,可以使游戏更加高效且逻辑清晰。掌握这些技巧有助于开发者更好地应对游戏开发挑战。
162 0
|
4月前
|
开发者 图形学 Java
Unity物理引擎深度揭秘:从刚体碰撞到软体模拟,全面解析实现复杂物理交互的技巧与秘诀,助你打造超真实游戏体验
【8月更文挑战第31天】物理模拟在游戏开发中至关重要,可让虚拟世界更真实。Unity作为强大的跨平台游戏引擎,内置物理系统,支持从刚体碰撞到布料模拟的多种功能。通过添加Rigidbody组件,可实现物体受力和碰撞;使用AddForce()施加力;通过关节(如Fixed Joint)连接刚体以模拟复杂结构。Unity还支持软体物理,如布料和绳索模拟,进一步增强场景丰富度。掌握这些技术,可大幅提升游戏的真实感和玩家体验。
184 0
|
4月前
|
图形学 iOS开发
Unity与IOS⭐最基础的交互演示
Unity与IOS⭐最基础的交互演示
|
4月前
|
C# 图形学 数据安全/隐私保护
Unity数据加密☀️ 二、使用Rider将C#代码生成DLL文件
Unity数据加密☀️ 二、使用Rider将C#代码生成DLL文件
|
6月前
|
存储 图形学
【unity小技巧】unity事件系统创建通用的对象交互的功能
【unity小技巧】unity事件系统创建通用的对象交互的功能
73 0
|
6月前
|
JSON 开发框架 API
【推荐100个unity插件之20】一个强大的JSON处理库——Newtonsoft.Json(也称为Json.NET)
【推荐100个unity插件之20】一个强大的JSON处理库——Newtonsoft.Json(也称为Json.NET)
565 0
|
6月前
|
JavaScript 前端开发 C#
初识Unity——创建代码、场景以及五个常用面板(创建C#代码、打开代码文件、场景的创建、Project、Hierarchy、Inspector、Scene、Game )
初识Unity——创建代码、场景以及五个常用面板(创建C#代码、打开代码文件、场景的创建、Project、Hierarchy、Inspector、Scene、Game )
414 0
|
6月前
|
存储 缓存 开发工具
初识Unity——unity的安装以及工程介绍(安装unity hub、版本选择、中文设置、安装编辑器、Assets文件、Library 文件、[ProjectName].sln 文件)
初识Unity——unity的安装以及工程介绍(安装unity hub、版本选择、中文设置、安装编辑器、Assets文件、Library 文件、[ProjectName].sln 文件)
1664 0