如何在 Windows 上正确设置 LuaBinaries 文件?

我正在尝试设置来自 LuaBinaries(特别是 Lua 5.2.4 64 位)的文件,但有一些我感到困惑的地方。

有两个提供的 zip 文件,二进制文件:lua-*_Win*_bin.zip 和库文件:lua-*_Win*_*_lib.zip

所以,这是我的问题:

  1. 对于库文件,提供了两个版本,静态和动态。有什么区别?
  2. 动态库的 zip 文件包含一个 lua*.dll,但是同名文件也在二进制文件的 zip 文件中提供。我应该使用哪一个?
  3. 一些库 zip 文件(旧版本?)中包含一个 liblua*.a 文件,这是应该被命名为 lua*.lib 文件吗?

原文链接 https://stackoverflow.com/questions/69365462

点赞
stackoverflow用户11702338
stackoverflow用户11702338

问题1

对于库(libraries)提供了两个版本,即静态库和动态库。它们有什么区别?

静态库可以被_嵌入到_你自己的程序中,而动态库则是与你的程序_链接(linked to)_的,因此系统在运行程序时会搜索它。如果搜索动态库失败,系统将无法正确地运行你的程序。

问题2

动态库(zip文件)中包含了一个lua*.dll,但是在二进制文件(zip文件)中也提供了一个同名的文件。我应该使用哪一个?

lua-*_Win*_bin.zip 下的 lua*.dll 是由 lua.exe 和 luac.exe 使用的_动态_链接库(.dll)。如果在删除它后运行 lua.exe,Windows 将会抛出错误。

该使用哪一个取决于你的目的。通常你想在你的项目中使用静态库。

  • 禁止运行不同版本的Lua字节码(例如,使用lua v5.2.4创建的字节码在luac v5.1.4上运行)(通过检查字节码文件的头部)。
  • Lua升级后有时会引入破坏性变化,并且一些公共API在不同版本间变化。如果从源代码构建和安装Lua,则只会产生二进制文件和静态库。
  • Lua是一种非常小的语言(在Linux下,静态库约为356K(v5.1.4)或440K(v5.3.3),通过du -sh liblua.a量测),因此将静态库嵌入到你的程序中对于许多高端设备来说很好。

如果你熟悉make命令,你可以从源代码构建Lua并将其加载到你的项目中。或者,只需在你的项目中使用静态库。 (我认为大多数Windows用户的环境中没有lua*.dll。)

问题3

一些库(zip文件)(更旧的?)中包含一个 liblua*.a 文件,这是一个名字错误的 lua*.lib 文件吗?

不是。libxxx.a 和 libxxx.so 是 * nix 系统(如Linux和FreeBSD)的静态和动态库命名约定。

2021-10-03 15:50:25