lua_getglobal崩溃程序

时间:2011-07-19 22:15:43

标签: c++ lua

我做了一篇关于尝试从C调用lua函数的帖子。你可以在这看一下:

Lua: getting global function failing after loading file

如您所见,我正在加载lua文件,然后尝试获取该函数并调用它。一位读者建议我解决这个问题的方法是改为dofile而不是加载文件,因为你需要执行脚本来访问这些函数。但这不是手头的问题......

无论使用dofile还是loadfile,当我调用lua_getglobal(L,“abc”)时; 我的程序崩溃......

调用堆栈:

>   Translation.exe!luaS_newlstr(lua_State * L=0xcccccccc, const char * str=0x00460924, unsigned int l=3)  Line 84 + 0x3 bytes  C
    Translation.exe!lua_getfield(lua_State * L=0xcccccccc, int idx=-10002, const char * k=0x00460924)  Line 551 + 0x20 bytes    C
    Translation.exe!LanguageShovel::FileFound(std::basic_string<char,std::char_traits<char>,std::allocator<char> > path="C:\Loud\Resolution\orchid\source\EAWResolutionApplication.cpp")  Line 32 + 0x16 bytes  C++

崩溃:

  for (o = G(L)->strt.hash[lmod(h, G(L)->strt.size)];
       o != NULL;
       o = o->gch.next) {

在Lua库的lstring.c文件中。我不知道这个lua源代码到底发生了什么。你认为它可能是一个lua bug吗?或者我只是做错了吗?

正在运行:Windows xp 32位。

1 个答案:

答案 0 :(得分:3)

L=0xcccccccc表示您没有正确地将Lua状态变量传递给此函数(或者它在lua_openlua_getglobal调用之间丢失了。