错误LNK2019:未解析的外部符号_luaJIT_setmode

时间:2013-01-27 16:08:32

标签: c++ visual-studio-2010 visual-c++ lnk2019

我有这段代码(文件luascript.cpp):

bool LuaInterface::initState()
{
    m_luaState = luaL_newstate();
    if(!m_luaState)
        return false;

    luaL_openlibs(m_luaState);
#ifdef __LUAJIT__
    luaJIT_setmode(m_luaState, 0, LUAJIT_MODE_ENGINE | LUAJIT_MODE_ON);
#endif

    registerFunctions();
    if(!loadDirectory(getFilePath(FILE_TYPE_OTHER, "lib/"), false, true))
        std::clog << "[Warning - LuaInterface::initState] Cannot load " << getFilePath(FILE_TYPE_OTHER, "lib/") << std::endl;

    lua_newtable(m_luaState);
    lua_setfield(m_luaState, LUA_REGISTRYINDEX, "EVENTS");
    m_runningEvent = EVENT_ID_USER;
    return true;
}

声明(文件luajit.h):

LUA_API int luaJIT_setmode(lua_State *L, int idx, int mode);

,错误是:

1>luascript.obj : error LNK2019: unresolved external symbol _luaJIT_setmode referenced in function "public: virtual bool __thiscall LuaInterface::initState(void)" (?initState@LuaInterface@@UAE_NXZ)
1>C:\Users\GUIAKI\Documents\trunk.r5918\vc10\Debug\tfs.exe : fatal error LNK1120: 1 unresolved externals

我该如何解决?

2 个答案:

答案 0 :(得分:3)

只需删除该行。

如果你保留它,你就无法与普通的Lua联系。如果你链接LuaJIT,默认情况下启用JIT编译器。这行代码完全没有意义。

答案 1 :(得分:2)

好像你忘了把图书馆链接成“luaJIT”的一部分(从未听说过或使用它)。

应该有一个lib文件,您必须将其作为附加依赖项添加到项目中(链接器设置)。

另外请记住包含正确的标题(C ++为“lua.hpp”,C为“luajit.h”)。