我做了一篇关于尝试从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位。
答案 0 :(得分:3)
L=0xcccccccc
表示您没有正确地将Lua状态变量传递给此函数(或者它在lua_open
和lua_getglobal
调用之间丢失了。