Как решить проблему отсутствия Lua DLL при использовании LuaBinaries и LuaBridge?
Я пытаюсь внедрить Lua в C++ (и изучать Lua), начиная с метода тренировочных колес Элиаса Далера. Я использую MSVC 14.0, LuaBinaries 5.3.2 - Выпуск 1 (в частности, lua-5.3.2_Win32_dllw4_lib.zip здесь) и LuaBridge 2.0.
Я добавил следующие дополнительные каталоги:
C:\Lua-5.3.2_Win32_dllw4_lib\ включают в себя: C:\LuaBridge
И следующая дополнительная зависимость:
C:\Lua-5.3.2_Win32_dllw4_lib\ liblua53.a
И я использую следующий источник (урезанный, насколько это возможно):
#include "stdafx.h"
#include <LuaBridge.h>
int main() {
luabridge::lua_State* L = luabridge::luaL_newstate();
}
Этот источник прекрасно компилируется и связывается, но само приложение вызывает стандартную отсутствующую системную ошибку DLL:
Программа не может запуститься, потому что lua53.dll отсутствует на вашем компьютере. Попробуйте переустановить программу, чтобы решить эту проблему.
lua53.dll находится в C:\lua-5.3.2_Win32_dllw4_lib\ - что мне не хватает?
1 ответ
Согласно официальной документации Microsoft, Windows ищет библиотеки DLL в следующих каталогах:
Каталог, в котором находится исполняемый модуль для текущего процесса.
Текущий каталог.
Системный каталог Windows.
GetSystemDirectory
Функция извлекает путь к этому каталогу.Каталог Windows.
GetWindowsDirectory
Функция извлекает путь к этому каталогу.Каталоги, перечисленные в
PATH
переменная окружения.
Таким образом, одним из способов решения проблемы было бы добавить C:\lua-5.3.2_Win32_dllw4_lib
текущему пользователю PATH
,
По сравнению с другими вариантами, это имеет то преимущество, что не требует прав администратора и не требует lua53.dll
находиться либо в текущем каталоге, либо в том же каталоге, что и ваш исполняемый файл.