LUA调用C++库详解工具研发组DDLi(李尚林) 我们组使用lua通过工具tolua++调用C++库。 这几天通过阅读书籍和查阅资料以及与Andy等同事的讨论,了解到了一些LUA调用c++库的实现原理。 现在,我将与您分享我的经验。 如有遗漏和错误,敬请指教! 一般来说,lua调用C++函数有两种方式,具体如下: 使用lua_register注册 和Quantum Studio的几位同事讨论后,都使用这种方式注册C++库函数。 方法如下: 定义一个导出函数: 然后在main函数中注册该函数:代码在注册mySin函数后执行config.Lua脚本,脚本执行在C++中注册的mySin函数。 请注意,此方法的最大限制是:注册函数的生命周期取决于宿主 C++ 构建高效持续集成平台以保护游戏质量的生命周期。 Lua 调用 C++ 库来解释代码的生命周期。 该脚本不会独立于 C++ 代码运行 C++ 函数。 对于游戏工作室的同事来说,脚本是在游戏运行的时候调用的,所以习惯了这种方式。 动态链接方法。 Lua独立执行C++函数的方式是通过动态链接库。 新建一个dll工程导出一个幂函数到square(头文件和附加库省略)。 按照课本一步一步,把要注册的函数放到luaL_Reg结构体中。 生成dll后游戏图片素材,运行同目录下的脚本config.lua:运行失败,提示f为nil,表示导入库失败。 经分析游戏开发素材,原来教材中dll语言的编写方法,我们必须在C++的dll源码前加上:构建高效持续集成平台,保障游戏质量 Lua调用C++库详解,所以luaopen_mylib 成为dll 的导出函数。 实际上,脚本在执行Requre("mylib")时,做了这些事情:即lua解释器会执行dll中导出的函数作为库的初始化函数。 接下来执行脚本,发现f不为nil,而是提示power为nil。 这是怎么回事? 经过andy的苦心研究,原来导入库和函数是成功的cocos lua 调用ccocos lua 调用c,但是调用的时候必须指定名字空间! 添加mylib后,执行成功。