我最近在做一些游戏脚本的开发,使用的是lua 语言.
但是在使用的时候,总感觉脚本平台 提供的函数威力不够大.
就想这自己去扩展一些使用的功能出来.
以前学过一点c++ 想着 用opencv 做一些小功能 应该不是太难.
但是我在做的时候第一步就遇到了大麻烦.
主要就是 吧c++代码编译成so 总是弄不成
找来了代码
#include <lua.h>
#include <luaxlib.h>
#include <stdio.h>
static int log(lua_State *L){
int num = luaL_checkinteger(L, 1);
printf("log num :%d", num);
return 0;
}
static int logEx(lua_State *L){
size_t len = 0;
const char* str = lua_checkstring(L, 1, &len);
print("logEx %s %d", str, len);
return 0
}
int luaopen_mylib(lua_State *L){
luaL_Reg = libs[] = {
{"log", log},
{"logEx", log},
{nullptr, nullptr}
}
luaL_newlib(L, 1);
return 1;
}
接下来就是编译了 ,然后噩梦来,
我从来没用过 linux 就想着能不能在Windows下生成so
上网找了一下 好像 用Android 的ndk 应该是可以的
然后继续找资料是 大致学习了下 make cmake 是怎么回事
还有 Android.mk 等等
就开始搞了 ,但是中间不停的出问题 ,
最后到了这一步我做不下去了.
上面这个是代码 ,没什么问题 .
这个是 错误提示
但是他太奇怪了
他说找不到 这个符号 但是 这些明明已经在上面的头文件里面声明了
我也正确引用了 怎么会找不到?
而且你们看上面的语法高亮. 明明是找到了的.
我按转到声明也能,正确找到相关头文件.
后来 直接 吧头文件 内容 直接复制到这里面也不行 还是出现这种错误.
在然后我干脆放弃 在Windows下生成了
在Linux 中依然也是 这种错误
在Android.mk 中我也指定了 头文件所在目录
文件也没差
结果是一样的
后来换用了 clion
居然能生成 一切看起来 多么美好 拿到手机上测试一下吧
实际使用
好吧 64位!!!!!!
查资料 改 32位 改好了
这又是什么鬼 继续查资料 好吧好像是编译器的问题 改吧 加参数
好吧到这一步我已经完全 看不懂了 连资料都没得查
为了这个东西我已经搞了好几天了 绝大部分都是在查资料学习
说实话 反复的失败真的很打击人
不知道是不是一开始我的方向就走错了 导致越走越歪
有相关经验朋友 能给提个可行的解决方案吗