Я пытаюсь просто использовать следующий код C ++
lua_State *state = luaL_newstate();
luaL_openlibs(state);
lua_getglobal(state, "_G");
lua_pushstring(state, "print");
lua_pushnumber(state, 4.5);
lua_call(state, 2, 1);
lua_close(state);
И я получаю ошибки компоновщика. Все вышеупомянутые вызовы функций генерируют ошибки компоновщика:
1>main.obj : error LNK2001: unresolved external symbol _luaL_newstate
1>main.obj : error LNK2001: unresolved external symbol _lua_pushnumber
1>main.obj : error LNK2001: unresolved external symbol _lua_call
1>main.obj : error LNK2001: unresolved external symbol _lua_pushstring
1>main.obj : error LNK2001: unresolved external symbol _luaL_openlibs
1>main.obj : error LNK2001: unresolved external symbol _lua_getfield
1>main.obj : error LNK2001: unresolved external symbol _lua_close
Включение заголовка выполняется с помощью этого кода:
extern "C" {
#include "lua.h"#include "lauxlib.h"#include "lualib.h"}
Я «установил» LuaJIT, используя MinGW, mingw32-make BUILDMODE = static. Это дало мне хороший «Успешно построенный LuaJIT».
Я компилирую код с VS2012. Я установил компоновщик так:
Дополнительные директории библиотеки: D: \ Programming \ LuaJIT Source \ LuaJIT-2.0.1 \ src
Дополнительные директории включения: D: \ Programming \ LuaJIT Source \ LuaJIT-2.0.1 \ src
Я использую Windows7 и использую последнюю версию LuaJIT со страницы github.
В общем, вы должны скомпилировать все ваши библиотеки, используя тот же компилятор, что и ваше приложение. MinGW создает архив библиотеки .a, тогда как MSVC обычно выводит архив .lib.
Итак: Перекомпилируйте LuaJIT с помощью MSVC, добавьте путь, где находится luajit.lib, к вашему пути компоновщика и добавьте luajit.lib в список библиотек, которые будут связаны с вашим приложением.
Вы должны установить путь к библиотеке LuaJIT, см. Рисунок ниже