首页 / C++ / Lua 跟 C++ 的交互
Lua 跟 C++ 的交互
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Lua 跟 C++ 的交互,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2192字,纯文字阅读大概需要4分钟。
内容图文
乱七八糟的前戏:
1. 到官网下载 Lua 文件 可參考 -> Lua 下载与配置
2. 设置环境 可參考 -> VS 配置Lua环境
交互过程有:
1. C++ 訪问 Lua 的变量
2. C++ 调用 Lua 的函数
3. Lua 訪问 C++ 的变量
4. Lua 訪问 C++ 的函数
No code say a j8
C++ 调用 Lua
#include <iostream> #include <string> // 引入Lua必要的头文件,Version: Lua5.1.5 extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib.h" }; using namespace std; // C++ 调用 lua int main() { //初始化全局L lua_State *L = luaL_newstate(); //打开库 luaL_openlibs(L); //载入lua脚本文件 if (luaL_loadfile(L,"LuaFile\\lua.lua")) // lua.lua 的路径,这里使用相对路径 { printf("file load error\n"); } lua_pcall(L,0,0,0); // 载入 Lua 文件 lua_getglobal(L, "l_str"); // get, 将L指向 lua文件里的函数 l_str lua_pcall(L,0,1,0); // 运行指针L指向的函数,将结果返回到栈顶, (0,1,0) 表示 (输入个数,输出个数,其它处理) string strVersion = luaL_checkstring(L,1); // 从栈顶获取元素 cout<<strVersion<<endl; lua_close(L); return 0; } /************************************* Lua.lua version = "Lua version: 5.1.5"; function l_str() return version; end; print("Load LuaFile Accomplish"); *************************************/
Lua 调用 C++
#include <iostream> #include <string> // 引入Lua必要的头文件,Version: Lua5.1.5 extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib.h" }; using namespace std; // 将lua中的变量,通过这个函数打印出来 int c_Print(lua_State* L) // 返回值为压入栈中元素的个数 { // 从參数列表中,获取元素 string strVersion = luaL_checkstring(L,1); cout<<strVersion<<endl; lua_pushstring(L, strVersion.c_str()); // 将 strVersion 压入栈。也能够不压 return 1; // 返回压入栈中元素的个数 } // Lua 调用 C++ 的函数 int main() { //初始化全局L lua_State *L = luaL_newstate(); //打开库 luaL_openlibs(L); //载入lua脚本文件 if (luaL_loadfile(L,"LuaFile\\lua.lua")) // lua.lua 的路径,这里使用相对路径 { printf("file load error\n"); } lua_pcall(L,0,0,0); // 载入 Lua 文件 lua_pushcfunction(L, c_Print); // 将C++函数push进来 lua_setglobal(L, "c_Print"); // 将C++函数进行注冊。这样lua文件就能识别到了。lua_getglobal(L, "l_Print"); lua_pcall(L,0,0,0); // 调用lua 中的 l_Print 函数 lua_close(L); return 0; } /************************************* Lua.lua version = "Lua version: 5.1.5"; function l_Print() c_Print(version); end; print("Load LuaFile Accomplish"); *************************************/
执行结果:
原文:http://www.cnblogs.com/jhcelue/p/7130318.html
内容总结
以上是互联网集市为您收集整理的Lua 跟 C++ 的交互全部内容,希望文章能够帮你解决Lua 跟 C++ 的交互所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。