使用 Lua 在 Love2D 中需要一个共享对象 (.so) 文件
Posted
技术标签:
【中文标题】使用 Lua 在 Love2D 中需要一个共享对象 (.so) 文件【英文标题】:Requiring a shared object (.so) file in Love2D with Lua 【发布时间】:2021-10-29 21:57:36 【问题描述】:最近,我想做一个Love2D 游戏并在Steam 上发布。我环顾互联网,发现luasteam。 luasteam 的作用是为 Steam API 创建 lua 绑定。 Luasteam,至少对于 Linux,是随共享对象 (.so) 文件一起分发的。当我尝试要求它时(它与我的main.lua
在同一个文件夹中),使用Steam = require('luasteam')
然后运行love <FolderName>
,它不起作用。我收到一条错误消息。
问题是,当我在项目文件夹中运行 love ../<FolderName>
时,它可以工作。
现在您可能会问,“为什么不一直这样做?”。这是因为像我上面那样运行它只是一个快速修复。当您将游戏设为 .love 文件时,它会按照我之前向您展示的方式运行并显示与之前相同的错误:
我尝试更改package.cpath
,但无济于事。有什么办法可以解决这个问题?
【问题讨论】:
【参考方案1】:您没有指定如何您尝试更改 package.cpath
,因此很难说出了什么问题,但您需要做的是以允许的方式进行设置luasteam.so
相对于 Lua 解释器(嵌入在 Love 可执行文件中)的启动位置。
love ../<FolderName>
有效,因为您可能将luasteam.so
放入您的项目文件夹中,所以它被发现为./luasteam.so
。如果您想让love <FolderName>
工作,您需要将<FolderName>/?.so
包含在您的package.cpath
中。在require "luasteam"
之前尝试添加以下行:
package.cpath = package.cpath..";<FolderName>/?.so"
【讨论】:
以上是关于使用 Lua 在 Love2D 中需要一个共享对象 (.so) 文件的主要内容,如果未能解决你的问题,请参考以下文章