使用 Lua 在 Love2D 中加载共享对象(.so)文件

最近,我想要制作一个基于 Love2D 的游戏并在 Steam 上发布。于是我在互联网上搜索,找到了 luasteam。它的作用是为 Steam API 创建 Lua 绑定程序。在 Linux 操作系统下,luasteam 需要一个共享对象(.so)文件。在我的 main.lua 同目录下,我使用 Steam = require('luasteam') 尝试加载 luasteam 的 .so 文件,并运行 love <FolderName>,结果失败了。我收到了一条错误信息。

错误信息

问题在于,当我在项目文件夹内运行 love ../<FolderName> 时,它可以正常工作。

现在你可能会问:“为什么你不一直这样做呢?”这只是一个临时快速解决方案。当你制作一个 .love 文件时,它以我之前展示的方式运行,并显示与此前相同的错误:

错误信息

我尝试过更改 package.cpath,但没有用。请问如何解决这个问题?

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

点赞
stackoverflow用户1442917
stackoverflow用户1442917

你没有明确说明你是如何尝试更改 package.cpath 的,因此很难说出错了什么,但你需要做的是以一种允许在 Lua 解释器(嵌入在 Love 可执行文件中)启动的位置相对发现 luasteam.so 的方式来设置它。

love ../<FolderName> 可以正常工作是因为你很可能将 luasteam.so 放入了项目文件夹中,所以它被找到为 ./luasteam.so。如果你想使 love <FolderName> 起作用,你需要将 <FolderName>/?.so 包含在你的 package.cpath 中。尝试在执行 require "luasteam" 前添加以下行:

package.cpath = package.cpath..";<FolderName>/?.so"
2021-08-31 16:15:46