0
点赞
收藏
分享

微信扫一扫

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


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

前言

因为最近用到了​​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文件​​的方法~

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


  1. 动态库的编译
    一般是将一个​​头文件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​​ 不用该标志外部程序无法连接。相当于一个可执行文件。
  2. 动态库的链接
    这里有个程序源文件​​test.c​​与 动态库 ​​libtest.so​​ 链接生成执行文件 test:
    命令:$ gcc test.c -L. -ltest -o test
    命令:$ ldd test执行test,可以看到它是如何调用动态库中的函数的。

总结

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

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



举报

相关推荐

0 条评论