首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++嵌入式Lua中使用cjson

在C++嵌入式Lua中使用cjson
EN

Stack Overflow用户
提问于 2016-04-21 18:22:11
回答 2查看 449关注 0票数 3

我有一个C++程序,它创建一个lua_State并运行自定义Lua脚本。如果我想让lua_State预加载辛森而不是要求在Lua代码中调用"require“,我能知道这是否可能,以及如何做到这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-21 19:41:21

是的,有可能。为此请使用luaL_requiref。使用函数作为参数。您需要将cjson代码链接到您的可执行文件,编译器可能会喜欢luaopen_*函数的函数声明。如果您使用Lua5.1(它还没有luaL_requiref ),您可以使用或窃取Compat-5.3

票数 2
EN

Stack Overflow用户

发布于 2016-04-21 19:34:35

您可以通过C++调用require一次,如果不想在脚本中调用require,则可以从返回值中生成一个全局变量。

例如,在C++中,do:

代码语言:javascript
运行
复制
if (luaL_dostring(L, "cjson = require(\"cjson\")")) // run code
    std::cout << luaL_checkstring (L, -1) << std::endl; // print error

在此之后,您可以在脚本(如cjson )中使用cjson.new(),而无需任何要求,也不需要调用,因为它是作为全局变量存在的。

由于C++使用了require,那么以后在lua中调用require就不会再次运行cjson文件,而不像使用dofile或类似的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36777560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档