如何在使用 LuaBinary 和 LuaBridge 时解决缺少的 Lua DLL

How to resolve missing Lua DLL when using LuaBinaries and LuaBridge?

本文关键字:解决 DLL Lua LuaBridge LuaBinary      更新时间:2023-10-16

我正在尝试将Lua嵌入到C++中(并学习Lua),从Elias Daler的训练轮方法开始。我正在使用MSVC 14.0,LuaBinaries5.3.2 - Release 1(特别是这里的lua-5.3.2_Win32_dllw4_lib.zip)和LuaBridge 2.0。

我添加了以下附加包含目录:

C:\lua-5.3.2_Win32_dllw4_lib\include;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\ 中 — 我错过了什么?

根据官方Microsoft文档,Windows 在以下目录中搜索 DLL:

  1. 当前进程的可执行模块所在的目录。

  2. 当前目录。

  3. 窗口系统目录。GetSystemDirectory函数检索此目录的路径。

  4. 窗口目录。GetWindowsDirectory函数检索此目录的路径。

  5. PATH环境变量中列出的目录。

因此,解决问题的一种方法是将C:lua-5.3.2_Win32_dllw4_lib添加到当前用户的PATH中。

与其他选项相比,这具有不需要管理员权限的优点,并且不需要lua53.dll位于当前目录或可执行文件所在的目录中。