Как решить проблему отсутствия 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 в следующих каталогах:

  1. Каталог, в котором находится исполняемый модуль для текущего процесса.

  2. Текущий каталог.

  3. Системный каталог Windows. GetSystemDirectory Функция извлекает путь к этому каталогу.

  4. Каталог Windows. GetWindowsDirectory Функция извлекает путь к этому каталогу.

  5. Каталоги, перечисленные в PATH переменная окружения.

Таким образом, одним из способов решения проблемы было бы добавить C:\lua-5.3.2_Win32_dllw4_lib текущему пользователю PATH,

По сравнению с другими вариантами, это имеет то преимущество, что не требует прав администратора и не требует lua53.dll находиться либо в текущем каталоге, либо в том же каталоге, что и ваш исполняемый файл.

Другие вопросы по тегам