在Lua中使用hpdf时加载模块失败,寻求技术帮助
Lua Haru PDF模块加载错误:undefined symbol: HPDF_LoadPngImageFromFile2
我尝试运行以下Lua代码生成PDF:
local hpdf = require "hpdf" local pdf = hpdf.New() if pdf then local page = hpdf.AddPage(pdf) local height = hpdf.Page_GetHeight(page) local width = hpdf.Page_GetWidth(page) local font = hpdf.GetFont(pdf, "Helvetica") hpdf.Page_SetFontAndSize(page, font, 24) hpdf.Page_BeginText(page) hpdf.Page_TextOut(page, 60, height - 60, "Hello from Haru") hpdf.Page_EndText(page) hpdf.SaveToFile(pdf, "hello.pdf") hpdf.Free(pdf) else io.write("Error creating PDF object\n") end
执行命令lua hello.lua时触发错误:
lua: error loading module 'hpdf' from file '/usr/lib/lua/5.2/hpdf.so': /usr/lib/lua/5.2/hpdf.so: undefined symbol: HPDF_LoadPngImageFromFile2 stack traceback: [C]: in ? [C]: in function 'require' hello.lua:1: in main chunk [C]: in ?
我是Lua新手,需要解决这个问题。
问题原因
该错误源于Lua的hpdf模块(hpdf.so)编译依赖的Haru PDF库版本,与当前系统安装的Haru PDF库版本不匹配。模块中引用了HPDF_LoadPngImageFromFile2函数,但系统现存的Haru库未提供该符号。
解决步骤
- 检查Haru PDF库版本:
执行命令pkg-config --modversion libhpdf查看当前系统的Haru库版本。若版本偏旧,大概率缺少HPDF_LoadPngImageFromFile2(该函数为Haru较新版本新增)。 - 更新Haru PDF库:
通过系统包管理器更新库文件,以Debian/Ubuntu为例:
若为源码编译安装,需下载Haru最新源码重新编译部署。sudo apt update && sudo apt install --reinstall libhpdf-dev libhpdf-doc - 重新编译Lua hpdf模块:
若更新库后仍报错,说明当前hpdf.so是基于旧版Haru编译的,需找到lua-hpdf绑定模块的源码,配合新Haru库重新编译,再替换/usr/lib/lua/5.2/hpdf.so文件。 - 匹配Lua与模块版本:
确认当前Lua版本(此处为5.2)与hpdf.so编译时依赖的Lua版本一致,版本不匹配也可能引发符号错误。
内容的提问来源于stack exchange,提问作者N.Ekanayake
相关产品推荐
相关产品推荐

