gpt4 book ai didi

build - 如何在一个 .exe 文件中构建和链接 Lua 核心和几个 Lua 模块

转载 作者:行者123 更新时间:2023-12-04 07:08:27 25 4
gpt4 key购买 nike

我需要制作可在 Windows、Linux、MacOS 上运行且无需安装的可移植应用程序。它必须是一个可执行文件,并且没有其他库文件(.dll、.so ...)。我将使用 ANSI C 并为每个平台重新编译项目。我想使用 Lua 脚本,所以必须在我的代码中嵌入 Lua 解释器。我需要网络和其他一些模块来编写,但我现在 Lua 已经有用于此目的的模块,所以我将使用它们而不是编写我自己的模块。
如何将所有这些、Lua 解释器、Lua 模块(即 LuaSocks)链接到一个可执行文件中,该文件将加载 .lua 脚本。 Lua 有“require”系统,它期望 .dll 找到,所以我想知道我应该做什么,仅仅调用没有“require”语句的函数就足够了吗。

最佳答案

你当然可以做到这一点(这并没有错!),尽管它不是微不足道的。 Lua 核心是为嵌入而设计的,以至于您可以将 Lua 源代码包含到您自己的项目中,并且它“正常工作”:)。

处理与模块略有不同 - 其中没有多少适合直接嵌入。例如,已成功尝试 LuaSocket之前还有asked here .基本思想是将 MODULE 的源代码嵌入到您的项目中并插入 luaopen_MODULE函数到 package.preload['MODULE'] ,所以 require以后可以捡起来。

一种方法是查看已经嵌入 Lua 和其他库的项目源,例如 LÖVE , MurgaLuaScrupp .

如果无法实现没有没有外部库的单个可执行文件的目标,您可以放宽一点并选择可移植应用程序 - 一个在单个目录中携带所有依赖项的应用程序,独立于系统。这就是 LuaDist专为 - 您使用它类似于 LuaRocks 来安装 Lua 包。不同之处在于这些包可以安装/部署到一个单独的目录中,其中也安装了所有必要的依赖项。这个目录(一个“dist”)是完全独立的,这意味着你可以将它移动到其他地方,它仍然可以工作。

另外,我不喜欢需要安装的应用程序的想法(因为它将文件放在我的系统周围) - 卸载应该只是删除一个目录:)

关于build - 如何在一个 .exe 文件中构建和链接 Lua 核心和几个 Lua 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8104145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com