草庐IT

lua_tonumber

全部标签

c++ - Lua:C++ 模块不能互相引用, undefined symbol

我创建了两个模块(共享对象)CPU和SaveState作为模拟器的一部分。两者都独立编译成.so单独的文件,并在运行时由Lua脚本使用require()加载;即:SaveState=require("SaveState")CPU=require("CPU")在CPU中,有一个对SaveState进行操作的方法:intCPU::save_state(SaveState*state){state->begin_section(savestate_namespace,savestate_data_size);state->write16(this->reg.af);state->write1

c++ - Lua C API 内存泄漏? (valgrind)

我正在尝试编写一个嵌入了Lua的C程序。而且,我尝试了一个非常简单的程序来启动,它只是创建Lua上下文,然后销毁它:#include#include#include#includeextern"C"{#include#include#include}intmain(intargc,char*argv[]){lua_State*L=lua_open();luaL_openlibs(L);lua_close(L);fprintf(stderr,"%s:%d\n",__FILE__,__LINE__);return(0);}我是这样编译的:(我实际上使用的是Torch7,所以..)g++-c

c++ - 如何以最简单的方式禁用 lua 中的风险函数?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicates:HowcanIlimitluapossibilities(callingOSfunctions,modules,etc.)HowcanIcreateasecureLuasandbox?luaL_openlibs(m_pState);我使用此函数加载所有库。我想跳过所有危险的库,如IO,但我找不到任何关于如何禁用库的文档。如何禁用某些库?是否有更危险的库可以获得脚本对系统的访问权限?

c++ - Lua - 初始化

这个问题在这里已经有了答案:Whatisanundefinedreference/unresolvedexternalsymbolerrorandhowdoIfixit?(38个答案)关闭8年前。我无法在ArchLinux下正确初始化lua。Lua-最新版本。这是我的代码:#includeextern"C"{#include#include#include}intmain(){lua_State*luaVM=luaL_newstate();if(luaVM==NULL){printf("Errorinitializinglua!\n");return-1;}luaL_openlibs(

c++ - Lua:这会导致段错误吗

我正在开发一个使用Lua编写脚本的程序,有时它会崩溃。使用GDB我想我发现了问题,但我不知道它是否解决了它,因为段错误只会偶尔发生。所以,旧代码是这样的:voidCall(std::stringfunc){lua_getglobal(L,func.c_str());//ThisisthelineGDBmentionedinabacktraceif(lua_isfunction(L,lua_gettop(L))){interr=lua_pcall(L,0,0,0);if(err!=0){std::cout问题是,这个函数每秒会被调用几次,但它需要调用的函数并不总是被定义,所以我认为堆栈会

c++ - 如何遍历 luabind 类(在 lua 或 c++ 中)?

如何遍历luabind类(在lua或c++中)?class'A'functionA:__init()--Doesnotwork--selfisuserdata,notatablefori,vinpairs(self)doendend谢谢 最佳答案 如果您尝试查找有关变量的反射信息(方法列表等),则可以使用class_info()和class_names()功能。注意:据我所知,这些函数没有记录,但它们至少存在于Luabind0.9中。使用风险自负。要在您的Lua代码中使用这些Luabind函数,您需要先绑定(bind)它们。示例:#

c++ - 从 Lua 设置 C 属性

我想从Lua更新C中的一些值,并且我已经编写了自己的绑定(bind)函数,但我想知道是否有可能。我希望能够做到这一点myNamespace.myValue=10让它做同样的事情myNamespace.setMyValue(10)可能吗?主要是好奇。直接分配/读取值而不是调用get/set函数更简洁。Lua能做这样的自动翻译吗? 最佳答案 这当然是可能的。您可以重载__newindex元方法以将myValue转换为setMyValue,然后在表上调用它。一个例子:localmeta={__newindex=function(t,key

c++ - c++ - 如何在没有lua绑定(bind)的情况下将成员函数注册到lua

我在我的c++游戏项目中使用lua5.1,但是当我尝试注册一个c++成员函数时,我无法使用lua。我想在lua中使用我的c++类成员函数,但是lua_register()函数的第3个参数只能接受c类型的普通函数指针或静态成员函数的指针。听说luabind库可以解决这个问题,但是我不想用luabind。这很好,但对我的项目来说太重了。有没有什么方法可以在没有任何库的情况下注册C++成员函数?我该怎么办? 最佳答案 我自己也有过同样的经历。我知道基本上有两个很好的解决方案。如果成员函数是针对每个lua状态只有一个的类,则一个很好。另一个

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代码中的何处被调用。我