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

error LNK2019: unresolved external symbol _luaJIT_setmode

本文关键字:符号 外部 luaJIT setmode LNK2019 错误      更新时间:2023-10-16

我有这段代码(文件 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:UsersGUIAKIDocumentstrunk.r5918vc10Debugtfs.exe : fatal error LNK1120: 1 unresolved externals

我该如何解决?

只需删除该行即可。

如果你保留它,你不能链接到普通的Lua。如果您链接到 LuaJIT,则默认情况下会启用 JIT 编译器。那行代码完全没有意义。

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

应该有一个 lib 文件作为额外的依赖项(链接器设置)添加到项目中。

还要记住包含正确的标头("lua.hpp"表示C++,"luajit.h"表示 C)。

相关文章: