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 に答える