Lua源码编译

本文最后更新于 2024年8月6日 凌晨

下载源码

源码的下载以及版本请参考Lua: download area进行下载。由于我是准备用于Hades2的Mod开发,因此选择和游戏一样的lua52.dll中的5.2.2版本。下载会得到一个tar.gz文件,将其解压后,需要找到其中的src文件夹,此文件夹将会在后续编译源码使用。除此之外,你还需要下载Visual Studio,注意不是VSCode,我们需要的是紫色logo的那个Visual Studio,同时你还需要对这个软件进行一定的配置。

解决方案建立

Visual Studio2022中,选择新建空白解决方案,解决方案名称随意(我这里直接默认的Solution1),然后选择一个合适的地方存放代码,我这里存放在了F:\Programme\luabuild\:

在MVCS中建立新项目

在解决方案资源管理器中,右键->添加->新建项,分贝建立三个新的空项目(C++),分别命名为lua,liblualuac

构建项目结构

最终你的解决方案资源管理器应该长这样:

解决方案结构

繁琐的配置

源码与引用添加

在第一步我们下载得到了压缩包,将解压后里面的整个src文件夹复制到解决方案的根目录,即F:\Programme\luabuild\Solution1中:

此时的文件夹组成

下一步,我们需要为每一个项目添加代码。

  • 对于liblua,右键->添加->添加现有项,把src文件夹下除了lua.c、luac.c这两个文件都添加进项目中:

    liblua的配置

  • 对于lua,右键->添加->添加现有项,只选择添加src/lua.c一个文件。然后右键->添加->引用,选择liblua

    添加引用

  • 对于luac,将src中除了lua.c文件的其余代码文件都添加到luac中

项目配置

接下来我们要开始配置了。所有的项目配置都需要在对应项目右键,然后选择属性(对应的快捷键默认是Alt+Enter),接下来我会定义一下操作:

  1. 在打开的项目属性页中,最顶上的选项中配置为Release和x64平台,如图所示:

    项目编译配置

  2. 配置属性->常规->配置类型: 选择动态库(.dll),如图所示:

    选择动态库版本

  3. C/C++ ->预处理器:预处理器定义,选择<编辑…>,添加如下两行(第二行可能和使用的是VS2019/2022有关,我是2022版本,参考博文里面是2019,2022版本似乎不加第二行会报错):

    1
    2
    LUA_BUILD_AS_DLL
    _CRT_SECURE_NO_WARNINGS

预处理器定义

  1. C/C++ -> 高级:编译为,选择编译为C代码(/TC)

    选择编译为C代码

接下来的内容很重要,针对不同的项目,需要进行不同的配置!

  • 对于liblua,需要执行1234,共四个步骤。
  • 对于lualuac,需要执行134三个步骤,没执行的第二个步骤检查是否配置类型为默认的“应用程序(.exe)”!

生成结果

至此配置全部完成。随后点击左上角的调试开始按钮等待生成,注意选择Release x64:

运行编译

最后你应该可以在x64文件夹中的Release找到编译后的文件内容。

Lua - “multiple vms detected” while trying to add extension for statically linked Lua - Stack Overflow

Moho Plugin API (proof-of-concept) - Moho Forum (lostmarble.com)


Lua源码编译
https://cybercolyce.cn/2024/06/02/编译Lua源码/
作者
L4k3d22
发布于
2024年6月2日
许可协议