我正在将LUA用于SDL项目。我从这里下载了预编译的LIB和DLL文件(http://sourceforge.net/projects/luabinaries/files/5.2/Windows%20Libraries/Dynamic/)(lua-5.2_Win32_dll10_lib.zip)并将其合并到我的项目中。当我构建调试版本时,应用程序运行100%正常。当我将其设置为释放模式并按下Visual Studio中的“播放”按钮时,它也运行正常。
但如果我通过在文件夹中双击它来运行Release文件,我会得到错误c0000005和lua52.dll。
我正在运行MicroSoft Visual C ++ 2010 Express。
我经历了删除行,直到它开始工作,导致错误的行是。
void aiBrainmanager::run(string holdData){
int errfunc = 0;
int s;
int s = luaL_loadstring(L, holdData.c_str());
if ( s==0 ) {
s = lua_pcall(L, 0, LUA_MULTRET, errfunc);
}
if (errfunc !=0) {
}
if (s !=0) {
aiBrainmanager::target->stopWorking();
}
}
任何设置错误或如何解决它。
答案 0 :(得分:1)
0xc0000005是内存违规。它在调试中工作的事实意味着许多可能的事情。
看看你的代码我会看:
为什么要检查错误然后什么都不做?????
if (errfunc !=0) {
// What happens in here??????
}
lua_pcall function在成功或其中一个时返回0 以下错误代码(在lua.h中定义):
LUA_ERRRUN:运行时错误。
LUA_ERRMEM:内存分配错误。对于此类错误,Lua不会调用错误处理函数。
LUA_ERRERR:运行错误处理函数时出错
我想你会发现你的 LUA_ERRMEM