lubridge getGlobal总是返回nil
LuaBridge getGlobal is always returning nil
我在1周前用lubridge做了第一个小测试,它从脚本中获得了一个int。
现在我删除了这段代码,并试图在我的游戏引擎中包含Lua脚本,但它不再工作。我试着用这样的代码返回到基本代码:
#include <iostream>
#include "lua5.2/lua.hpp"
#include "LuaBridge/LuaBridge.h"
using namespace luabridge;
int main()
{
lua_State* L;
L = luaL_newstate();
if(!luaL_loadfile(L, "../../script.lua"))
std::cout << "failed loading" << std::endl;
LuaRef s = getGlobal(L, "nmbr");
int luaInt = s.cast<int>();
std::cout << luaInt << std::endl;
return 0;
}
使用这个脚本
nmbr = 30
它给了我:
<>之前PANIC: Lua API的cell中未受保护的错误(错误参数#2(预期的数字,得到nil))中止(核心转储)之前当我试图从脚本中获得字符串或函数时,我不知道我在这方面做错了什么。
谢谢你的回答
来自luaL_loadfileex
的文档:
作为lua_load,这个函数只加载数据块;它不运行它
这意味着脚本已加载,但尚未执行,因此实际上没有变量nmbr
可获取。您需要首先运行脚本以使代码工作(例如通过调用lua_call
)。
这在lubridge教程的第一个简单示例中展示得很好。
luaL_loadfile
~= luaL_dofile
。您加载脚本并将其作为堆栈上的函数获取,但不执行它,因此全局赋值不会发生。
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 什么时候在C++中返回常量引用是个好主意
- 你能重载对象变量名本身返回的内容吗
- 为什么 Serial.println(<char[]>);返回随机字符?
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何获取std::result_of函数的返回类型
- QueryWorkingSet总是返回false
- (C++)分析树以计算返回错误值的简单算术表达式
- 访问者访问变体并返回不同类型时出错
- 如何返回一个类的两个对象相加的结果
- OpenInventor从9.8升级到10.4.2后,GLSL纹理返回零
- lower_bound()返回最后一个元素
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何取消对nullptr的屏蔽,返回正确的对象
- 奇怪的结构&GCC&clang(void*返回类型)
- 架构决策:返回std::future还是提供回调
- 当给定包含中文字符的wchar_t数组时,NSString initWithBytes返回nil
- 带有NSData的UIImage initWithData返回nil
- lubridge getGlobal总是返回nil