如何解决在使用 LuaBinaries 和 LuaBridge 时丢失 Lua DLL 的问题?

我正在尝试将 Lua 嵌入到 C++ 中(并学习 Lua),从 Elias Daler 的训练轮方法开始这里。我使用 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\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\ 中 - 我错过了什么吗?

点赞
用户4698882
用户4698882

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

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

  2. 当前目录。

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

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

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

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

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

2016-05-20 17:37:42