3

我有这段代码(文件 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

我该如何解决?

4

2 回答 2

3

只需删除该行。

如果你保留它,你不能链接到普通的 Lua。如果你链接到 LuaJIT,JIT 编译器默认是启用的,无论如何。那行代码完全没有意义。

于 2013-01-28T09:44:40.070 回答
2

似乎您忘记将库链接为“luaJIT”的一部分(从未听说过或使用过它)。

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

还要记住包含正确的标头(C++ 为“lua.hpp”,C 为“luajit.h”)。

于 2013-01-27T16:13:47.663 回答