Perl可执行文件崩溃:文件存在仍无法加载GD模块
使用pp打包含GD模块的Perl脚本后,在Citrix环境运行失败
报错信息
(为便于阅读添加了换行)
Can't load '...\AppData\Local\Temp\par-6e72616f\cache-20221205133501\5743946b.xs.dll' for module GD: load_file: The specified module could not be found at <embedded>/DynaLoader.pm line 193. at <embedded>/PAR/Heavy.pm line 140.
测试脚本内容
文件t2.pl仅包含以下代码:
use GD;
打包命令
通过批处理添加时间戳,执行打包命令:
pp -T 20221205133501 -o t2_20221205133501.exe t2.pl
问题现象
- 生成的可执行文件在本地笔记本电脑上可正常运行
- 但在精简版Citrix环境中运行时触发上述报错
- 确认报错中提到的
5743946b.xs.dll文件确实存在于指定临时路径下
环境信息
- Strawberry Perl v5.32.1,架构:MSWin32-x86-multi-thread-64int
- GD模块版本:v2.73
已尝试的解决方法
- 尝试在打包命令中添加
-m GD参数,无效 - 使用
objdump工具获取GD.xs.dll的依赖DLL列表:
objdump -x C:\Strawberry\perl\vendor\lib\auto\GD\GD.xs.dll | find "DLL"
- 将上述命令列出的所有DLL通过
-l参数加入打包,仍未解决问题 - 受企业环境限制,无法使用依赖外部程序的工具(如需要
wxpar的pp_simple)
内容的提问来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

