Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C+中嵌入lua从外部目录加载文件+? 我正在用C++中的Lua编写一个基本的脚本系统。我的一个粘合函数是通过以下方式调用的: lua_register(luaVM, "openFile", l_dial.l_specifyF);_C++_File_Lua_Directory - Fatal编程技术网

在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
检查你的程序中是否存在错误的内存访问。