• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

在Android Lua脚本中使用require函数加载拓展动态库so文件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

      上一篇文章粗略的说了在Android中使用Lua脚本实现模拟按键的方法,之前做lua拓展用的方法都是把自己的拓展代码放到lua源码里面一块编译,自己一直想拓展部分代码单独的编译成一个so文件,然后通过require的方式去加载自己的拓展库,由于开始对lua不熟悉,所以只能暂时把代码放一块编译了。

       现在终于找到解决办法,require函数调用是会去对应package.path和package.cpath定义好的目录下寻找对应名字的.lua或者.so文件,查看源码知道这两个属性定义的目录如下:

        但是Android的应用安装的后,so文件一般会存放在/data/app/应用包名/lib/下面,这个路径我们可以通过

  获取到。要使得脚本调用require函数是能搜索到我们的so库,就要把nativeLibraryDir设置到package.cpath中去,代码如下:

        这样lua就能搜索到我们的拓展的so文件了。运行脚本后lua能找到我们自定义的so文件,但是爆出了新的错误:

"dynamic libraries not enabled; check your Lua installation",查找了资料后发现是因为require函数会调用dlopen,所以我们在编译时设置cFLAGS把定义的宏打开就行了,Android studio gradle设置cFLAGS如下:


        查看源码是可以看到"LUA_USE_DLOPEN"和“LUA_USE_POSIX”的说明:

 

       大概的意思是要使得lua能动态链接,就要编译选项加上

-DLUA_USE_DLOPEN



鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Lua学习笔记一发布时间:2022-07-22
下一篇:
lua语法发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap