linker — Как связать LuaJIT с программой на C ++?

Я пытаюсь просто использовать следующий код 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.

3

Решение

В общем, вы должны скомпилировать все ваши библиотеки, используя тот же компилятор, что и ваше приложение. MinGW создает архив библиотеки .a, тогда как MSVC обычно выводит архив .lib.

Итак: Перекомпилируйте LuaJIT с помощью MSVC, добавьте путь, где находится luajit.lib, к вашему пути компоновщика и добавьте luajit.lib в список библиотек, которые будут связаны с вашим приложением.

1

Другие решения

Вы должны установить путь к библиотеке LuaJIT, см. Рисунок ниже
введите описание изображения здесь

0

По вопросам рекламы [email protected]