LUA 调用C代码的 通用方式
程序员文章站
2022-06-16 08:33:45
LUA 调用C代码的 通用方式测试环境 c4droid 懒人精灵 雷电模拟器C代码:int argc, char* argv[]: argc参数个数 传入的字符串数组下面展示一些 内联代码片。// An highlighted block#include int main(int argc, char* argv[]){ puts("C语言中文网"); puts(argv[2]); puts("w sh bas "); retu...
LUA 调用C代码的 通用方式
测试环境 c4droid 懒人精灵 雷电模拟器
C代码:
int argc, char* argv[]: argc参数个数 传入的字符串数组
下面展示一些 内联代码片
。
// An highlighted block
#include <stdio.h>
int main(int argc, char* argv[])
{
puts("C语言中文网");
puts(argv[2]);
puts("w sh bas ");
return 1;
}
C4droid直接编译
LUA代码:
// An highlighted block
function FileCmdRead(str) --文件命令读取\n返回
print("cmd:"..str)
local cmd=io.popen(str,"r");
for line in cmd:lines() do
print(line)
end
cmd:close()
--[[
if cmd then
local data=cmd:read("*a");
cmd:close()
print(data)
return true;
end
return false,"";
]]--
end
function main()
local flag,data=FileCmdRead("/data/data/com.n0n3m4.droidc/files/temp 1 wosh")
print(flag)
print(date)
end
main()
调试结果
踩过的坑
1:二进制执行文件只能放/data/local 或者getworkpath工作目录 才有执行权限
2:每个lua版本的API都有差异
3:main(int argc, char* argv[]) argv[] 数组参数下标从 0开始,但是 io.popen 传入的参数是 从 1开始
4:android 编译需要 选择编译器 GCC+Bionic
总结:通过C4droid直接编译C文件为二进制文件 LUA 通过 io.popen 调用这个文件
最后感谢 懒人精灵的开发者作者:懒人 要不然每次研究到死胡同都感觉自己研究不下去了
本文地址:https://blog.csdn.net/qq_27684977/article/details/109624303
上一篇: 令妃为乾隆帝生下了数量最多的孩子,为什么还说她不够受宠?
下一篇: 5G核心网