将Lua嵌入到C++中。
2011-2-26 21:48:45
收藏:0
阅读:159
评论:3
我想编写一个C++程序,在执行过程中可以与Lua脚本互动/调用。程序的一个关键概念是完全独立于平台,但是我似乎无法找到一个Lua构建实际上提供了这样的东西。
我找到的Lua构建要么基于环境变量,要么基于特定库,如".lib"、".dll"或".so"。官方Lua源自lua.org,也不符合我的要求,因为它定义了一个main函数...
是否有一个简单的 - 最好是像sqlite-amalgamation一样的东西 - 用于C/C++的Lua解释器,没有这些依赖项?
原文链接 https://stackoverflow.com/questions/5127226
点赞
stackoverflow用户618598
以下是我在项目中使用的起点(我一段时间以前找到了类似的东西并进行了调整,以便更快地进行更改):
Lua脚本文件:
-- 开始
-- 脚本:myscript.lua
print("this is lua")
-- 结束
C文件:
#include <stdlib.h>
#include <stdio.h>
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
int main(char argv[], int argc) {
static const luaL_reg lualibs[] = {
{ "base", luaopen_base },
{ NULL, NULL }
};
static void openlualibs(lua_State *l) {
const luaL_Reg *lib;
for (lib = lualibs; lib->func != NULL; lib++) {
lib->func(l);
lua_settop(l, 0);
}
}
lua_State *l;
l = lua_open();
openlualibs(l);
printf("now calling lua\n\n");
lua_dofile(l, "myscript.lua");
printf("\ndo something else\n\n");
lua_close(l);
return 0;
}
你可以自由地将它作为你的项目基础。
2011-02-26 13:57:44
stackoverflow用户68204
针对 Lua 核心和独立解释器的单一文件综合构建,请参阅官方源代码套件中的文件 etc/all.c
。您可以将其作为自己综合构建的基础,可能是通过消除最后一行对 lua.c
的引用来完成。
许多嵌入 Lua 的较大应用程序只需将核心源文件添加到项目中即可。如果应用程序打算不允许扩展代码从 .dll
或 .so
文件加载编译模块,这种方法特别有效。 如果应用程序允许编译模块,则通常最好链接到核心的共享库,以便应用程序和已加载的模块可以引用核心库的单个实例中的符号。请注意,意外包含多个 Lua 核心实例几乎肯定会产生非常难以诊断的症状。
2011-02-26 21:59:26
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
lua.c
包含了main
函数并且定义了控制台应用程序的入口。如果你将它从工程中移除,剩下的可以很好地构建为一个独立的库,或者如果你更喜欢的话,一个动态库。