草庐IT

lua-cjson

全部标签

c++ - 如何将Lua变量直接映射到C++变量?

我正在使用C++开发一个游戏引擎,使用Lua来定义NPC。我可以这样定义一个原型(prototype)NPC:orc={name="GenericOrc",health=100}functionorc:onIdle()print("Orcidles...")end然后使用entitySpawn(orc)生成一个“Orc”实例。这是一个C++函数,它从给定的表中读取健康和名称等值,用给定的值在C++中创建一个实体对象,此外还为特定的NPC创建一个Lua表。现在,我想直接连接Lua中的orc.health变量和C++中对应的Entity对象的mHealth成员变量,所以我可以在Lua中分配

c++ - Lua & C++ API 获取执行信息

在Lua中,我有一个名为utils.debug()的函数,我想做的是在我的Lua代码中使用它,如下所示:functionFoo:doSomethingif(/*something*/)thenprint("Success!")elseutils.debug()endendfunctionFoo:doSomethingElseif(/*somethingelse*/)thenprint("Awesome!")elseutils.debug()endend我想在我的整个Lua代码中使用它来帮助我进行调试。因此,我希望我的C++代码知道utils.debug()在Lua代码中的何处被调用。我

c++ - 调试嵌入式 Lua 5.2.2 代码

如何调试嵌入在我的C++应用程序中的Lua5.2.2代码?我已经看过这个question并且其中提供的所有IDE都处理5.1及更低版本,当我尝试将它们与5.2.2一起使用时,它们会崩溃。 最佳答案 您应该能够使用ZeroBraneStudio调试您的应用程序通过关注instructionsforLua5.2debugging.请注意,您需要针对Lua5.2编译luasocket。(您看到的崩溃可能是因为您的应用程序加载了针对Lua5.1编译的luasocket,而后者又加载了Lua5.1DLL或无法找到所需的符号。)如果您不想编译l

c++ - Lua 绑定(bind)到 C++ 和垃圾回收

好的,这是我遇到的问题。我有一个渲染引擎的Lua绑定(bind),它有一个内部渲染管理器,它自己跟踪渲染场景的指针并管理它们。问题是,当我从Lua使用它时,如果我不保留对添加到C++渲染管理器的每个对象的Lua引用,它就会开始垃圾收集指针,当然会导致崩溃。我不是特别想保存对我创建的每一件东西的每一个引用。有没有办法强制Lua不对某些东西进行垃圾回收?有没有其他方法可以解决这个问题?我正在使用SWIG生成Lua绑定(bind)。 最佳答案 防止Lua对对象进行垃圾回收的一个简单方法是将该对象放入一个表中(称之为uncollection

C++加密和解密Lua文件

我有一个用C++编写的程序(一个小游戏),它从Lua文件(它们基本上是程序的模块)获取配置。例如,程序从Lua文件中获取其名称、版本、允许和不允许执行的操作以及播放器可以执行的操作。问题是当我开始将这个小游戏分发给几个人时,他们可以配置我不想发生的Lua文件,所以我想过加密它们然后在程序启动时解密它们但我无法理解如何以何种方式真正做到这一点。总而言之,这是否像我想象的那样是一项相当简单的任务?我的看法是这样的:用某个程序以某种加密方式对lua文件进行加密。将C++代码写入程序,首先解密Lua文件,然后开始读取它们。这个概念正确吗?加密本身可以尽可能弱,只要它有效。

c++ - lua_open 使用 luaJIT 返回 null

使用最近的luaJITlua_open返回null。常规lua库不会发生这种情况。lua_State*L=lua_open();std::cout输出:0x0如何让luaJIT工作?中南合作:#include#include//linkedlibrary:libluajit-5.1.aintmain(intargc,constchar*argv[]){lua_State*L=luaL_newstate();//lua_open();std::cout附加信息:使用make和makeinstall从源代码构建在OSX10.9上(尝试了2.0.2和git)。使用编译器:$cc--versi

Lua 进阶 · 教程笔记

Lua进阶·教程笔记前言1.概述(略)2.查看官方接口文档3.require多文件调用4.迭代table5.string6.正则7.元表,面向对象元表和元方法面向对象8.协程coroutine9.二进制数据打包与解析字节序——大端和小端Lua处理包的二进制数据前言笔记的内容出自Bilibili上的视频:Lua教程-进阶部分-4K超清【不定期更新】笔记主要用于供笔者个人或读者回顾知识点,如有纰漏,烦请指出:)1.概述(略)2.查看官方接口文档国内的大佬云风翻译了Lua的Api参考手册:传送门【】以后读者在练习或者开发途中可以在参考手册里查看Lua提供的Api。3.require多文件调用Lua提

c++ - 如何在 Lua 5.2.3 中将 lua_number 从 double 正确更改为 float

我希望lua_number得到一个float而不是double。我知道我必须更改luaconf.h中的某些内容,但我不知道是什么。我正在使用Lua5.2.3和VisualStudioC++。 最佳答案 您需要编辑luaconf.h并更改这些:LUA_NUMBER到floatLUA_NUMBER_SCAN到"%f"LUA_NUMBER_FMT到"%.7g"l_mathop(x)到(x##f)lua_str2number使用strtof对于最后两个,您可能需要一个支持(部分)C99标准的C编译器。

c++ - 将 Lua 嵌入 C++

我想编写一个可以在执行期间交互/调用Lua脚本的C++程序。该程序的一个关键概念是完全独立于平台,但我似乎无法找到实际提供的Lua版本。到目前为止,我发现的Lua构建要么基于环境变量,要么基于特定的库,如.lib、.dll或.so。官方Lua源来自lua.org也不是我想要的,因为它定义了一个主要功能......是否有一个简单的-最好的情况是类似sqlite-amalgamation-Lua-interpreterforC/C++没有任何这些依赖项? 最佳答案 lua.c包含main并定义控制台应用程序的入口点。如果您将其从项目中删

c++ - "Undefined reference to"使用 Lua

我收到错误undefinedreferenceto'luaL_newstate'当我尝试构建我的项目时。我知道这是链接器的错误,但我对Lua和向项目添加库还比较陌生。顺便说一下,我使用Code::Blocks。API函数luaL_openlibs,luaL_loadfile,lua_pcall,lua_getfield,lua_type,lua_settop也不见了。我在一个网站上看到我必须将我的项目与libdl链接才能解决这个问题,但我真的不知道这意味着什么以及如何去做。 最佳答案 我遇到了同样的问题,就我而言,我找到了适合我的解