在使用VisualStudio进行链接和构建方面,我完全是个菜鸟。我想将Lua集成到我的C++控制台应用程序中。有人可以一步一步地介绍如何从lua.org获取Lua依赖项,到在VS中实际运行“HelloWorldfromLua”,以及中间的所有步骤。在网上找到这样的东西非常困难,因为大多数都需要构建Lua等的先决知识。谢谢:) 最佳答案 从LuaforWindows开始包裹。它将为您提供包含Lua安装的独立电池。LuaforWindows不是官方发行版,但它深受Lua用户社区的推崇。您可以使用它的lua.exe来获得在Windows
我正在尝试将lua嵌入到现有的C++应用程序中,并通过继承执行该工作的类为其制定了标准程序。我看到的严重问题是,如果暴露的对象在C++环境中被释放或删除,那么来自Lua的调用将导致崩溃。如果程序使用“delete”删除了内存,那么我也许可以在delete上写一个包装器来处理Lua中的释放,但是如果内存是由C++分配的,并在适当的变量超出范围时释放我看不到如何找到它然后在lua空间中采取适当行动的方法,有人对此有任何想法吗?谢谢。 最佳答案 一般来说,几乎每个Lua包装器都有一些方法来决定谁拥有什么内存。也就是说,一个对象是属于(因此
我正在尝试使用Lua文件作为配置或ini。我成功了,但我的解决方案激怒了我。具体来说,get_double,get_int和get_string功能需要以可重用的方式完成。我在创建没有参数的函数模板时遇到了问题。另外,我不确定如何概括lua_is...和lua_to....我的想法是给我们if(is_same::value)return(double)lua_isnumber(L,-1);但它没有用。这是工作代码:主.cc:#include#includeusingnamespacestd;classLua_vm{private:lua_State*L;public:doubleget
我是Lua的新手,正在尝试了解一些基础知识。我想了解的是将Lua绑定(bind)到C++实例。我对第三方库不感兴趣,我想在更基础的层面上理解这一点-谢谢:)这是我的问题:根据我所阅读的内容,我的假设是Lua只能绑定(bind)到静态C函数。这是正确的吗?这是否意味着要绑定(bind)C++类的实例,我首先需要为我想要的每个方法和属性getter/setter编写静态函数,并接受实例指针作为参数。我会在Lua中注册这些函数。我会向Lua传递一个指向C++类实例的指针。我会从Lua调用其中一个注册函数,传递C++实例指针。静态函数取消引用指针,调用等效方法。这有意义吗?还是我弄错了什么?感
我正在尝试学习如何将lua嵌入到C程序中,但我不擅长阅读技术文档,而且我还没有找到任何当前教程。这是我的程序:#include#include#include#includevoidreport_errors(lua_State*,int);intmain(intargc,char**argv){for(intn=1;n编译器给出了luaL_newstate、luaL_openlibs、luaL_loadfilex、lua_pcallk和lua_close的undefinedreference错误。我在一台Windows计算机上使用Code::Blocks,我已将luainclude目
使用LuaCAPI,我向Lua注册了一个简单的Object类,如下所示://MyC++ObjectclassclassObject{private:doublex;public:Object(doublex):x(x){}};//CreateandreturninstanceofObjectclasstoLuaintobject_new(lua_State*L){doublex=luaL_checknumber(L,1);*reinterpret_cast(lua_newuserdata(L,sizeof(Object*)))=newObject(x);luaL_setmetatabl
我在我的C++程序中有对象作为用户数据传递给Lua,我重写了这个用户数据的元表,以便对对象的索引进行赋值(通过__newindex和__index)导致对C的调用,这转换赋值以影响C++对象或将C++元素转换为Lua值(另一个用户数据或基本类型,如bool、number、string)。用户数据作为参数传递给从我的C++程序调用的类似事件的Lua函数。luaL_newmetatable(L,"object");lua_pushstring(L,"__index");lua_pushvalue(L,-2);/*pushesthemetatable*/lua_settable(L,-3);
当我在Lua中调用require'name'时,名称可以是预加载的模块名称或存在于当前工作目录中的文件。我有以下两个问题:一个。我想知道是否有可能在需要预加载模块或文件之前确定是否需要它。B.如果它是一个文件,我想修改将需要的脚本(通过在现有脚本之上添加/附加一些代码),然后最终需要修改后的脚本。A和B都可能吗?P.S.:我在C++中使用Lua。 最佳答案 AreAandBbothpossible?是的,因为您可以编写自己的“require”函数来满足您的需求(包括您描述的所有内容)。你也可以看看package.searchers,
我想在我的程序中使用一个全局lua_State*变量,通过initLua()函数初始化它,并使用它从main()运行一些Lua函数。当我尝试时,Lua代码根本无法运行。将来,我想使用一个Lua状态数组来实现多线程,其中每个线程都有自己的Lua状态。当我在main()中初始化Lua状态时,一切正常。我运行的是W10。在cfg.lua中:functionteste()return10;end在C++中,用于设置全局状态变量*L:voidinitLua(lua_State*L){L=luaL_newstate();luaL_openlibs(L);luaL_dofile(L,"./cfg.l
我是Lua的新手,我一直在尝试在我正在组装的游戏引擎中为逻辑实现Lua脚本。到目前为止,我在通过引擎启动和运行Lua时没有遇到任何问题,而且我能够从C调用Lua函数,并从Lua调用C函数。引擎现在的工作方式是,每个对象类都包含一组变量,引擎可以快速迭代这些变量以绘制或处理物理。虽然游戏对象都需要访问和操作这些变量以使游戏引擎本身看到任何变化,但它们可以自由创建自己的变量,Lua在这方面非常灵活,所以我没有预见到任何问题。无论如何,目前游戏引擎方面的事情都在C领域,出于性能原因,我真的希望他们留在那里。所以在一个理想的世界中,当产生一个新的游戏对象时,我需要能够让Lua读/写访问这个标准