在C+中嵌入lua从外部目录加载文件+? 我正在用C++中的Lua编写一个基本的脚本系统。我的一个粘合函数是通过以下方式调用的: lua_register(luaVM, "openFile", l_dial.l_specifyF);
代码如下:在C+中嵌入lua从外部目录加载文件+? 我正在用C++中的Lua编写一个基本的脚本系统。我的一个粘合函数是通过以下方式调用的: lua_register(luaVM, "openFile", l_dial.l_specifyF);,c++,file,lua,directory,C++,File,Lua,Directory,代码如下: static int l_specifyF(lua_State* luaVM) { const char* c = lua_tostring(luaVM, -1); cDialogManager::getSingletonPtr()->clearVector(); try{ luaL_dofile(luaVM, c); } catch(...) { cout << "Unable to op
static int l_specifyF(lua_State* luaVM) {
const char* c = lua_tostring(luaVM, -1);
cDialogManager::getSingletonPtr()->clearVector();
try{
luaL_dofile(luaVM, c);
}
catch(...) {
cout << "Unable to open file" << endl;
luaL_dofile(luaVM, "startup.lua");
}
return 1;
}
static int l_specifyF(lua_状态*luaVM){
const char*c=lua_tostring(luaVM,-1);
cDialogManager::getSingletonPtr()->clearVector();
试一试{
luaL_dofile(luaVM,c);
}
捕获(…){
从你的描述中,我严重怀疑它与文件夹结构有关。我的猜测是,你正在观察早期错误的后期反应…你确定你在正确的工作目录中吗?是的,是的,就像我说的,它有时工作,可能像10%~。此外,如果文件不存在,它会将“无法…”消息,但对于我得到的错误,它就像加载了文件一样。为什么不捕获并打印luaL_dofile返回的任何错误?如果执行assert(io.open(“marker.tmp”,“w”):close()
,或者更好的是assert(io.open(“scripts/marker.tmp”,“w”):close()会发生什么
,其中marker.tmp
是尚未存在的文件的合适唯一名称。如果它执行时没有错误,它是在文件系统中的何处创建的?它们是在正确的位置创建的(当它工作时…)我想这可能是towi在下面所说的,我必须确保我没有带来任何以前的错误,特别是文本输入功能…我想你可能是对的,我会有一个根,看看我是否能发现问题。你可以尝试使用valgrind
检查你的程序中是否存在错误的内存访问。