You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Love2D中使用Lua加载luasteam的.so共享库报错问题求解

问题原因

  1. Lua的package.cpath默认搜索路径和执行命令时的当前工作目录绑定,而非项目根目录。你在项目父目录执行love <FolderName>时,工作目录是父目录,找不到放在项目根目录下的luasteam.so;进入项目目录执行love ../<FolderName>时工作目录刚好是项目根目录,所以可以正常加载。
  2. .love格式本质是zip压缩包,操作系统的动态链接器无法直接读取压缩包内的.so共享库文件,所以就算把luasteam.so打进.love包也会加载失败。

解决方案

开发阶段

在main.lua最开头,先将项目根目录动态添加到package.cpath中,注意路径拼接规则:

-- 获取项目根目录的绝对路径
local project_root = love.filesystem.getSource()
-- 把项目根目录加入动态库搜索路径
package.cpath = package.cpath .. ";" .. project_root .. "/?.so"
-- 再引入luasteam
local Steam = require('luasteam')

之前修改package.cpath不生效,大概率是拼接的路径和luasteam.so的实际存放位置不匹配,用上面的写法可以自适应不同的启动位置。

发布打包阶段

不要把luasteam.so打包进.love文件,按照如下规则放置文件即可:

  • 普通分发:将luasteam.so和你的.love文件放在同一级目录
  • 融合打包(把.love和Love2D可执行文件合并为单个程序):将luasteam.so和最终生成的游戏可执行文件放在同一级目录
  • 额外注意:luasteam依赖Steam官方的libsteam_api.so,发布时也要把这个库放在同级目录,否则会出现二次加载失败。

内容的提问来源于stack exchange,提问作者Exquizzit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:15:03