2

我在我的 Perl 脚本中使用 Net::SSH2 模块并尝试使用 Par::Packer 制作可执行文件(Windows 的 .exe)。该脚本需要使用公钥从 Windows 框 ssh 到 linux 框,并且不想输入密码。

运行.exe时遇到以下错误

无法为模块 Net::SSH2 加载“C:\Users...\AppData\Local\Temp\par-73656172756d7567616d\cache-a6d57d5a234829aae84d08c4a78a09ad307ea8d3\a9057da2.xs.dll”:加载文件:找不到指定的模块C:/Strawberry/perl/lib/DynaLoader.pm 第 193 行。在 C:/Strawberry/perl/vendor/lib/PAR/Heavy.pm 第 123 行。

尝试使用以下方法解决,但没有一个有效

  1. 试图从 Strawberry Perl 的便携版本打包
  2. 尝试在使用 Par::Packer 打包时链接 a9057da2.xs.dll

是否有任何解决方法或修复方法可以使用 Net:SSH2 将 perl 脚本打包到 .exe。或者是否有 Net::SSH2 的替代品,用于使用公钥(不传递密码)从 Windows 到 Linux 的 ssh?

4

1 回答 1

1

可能您没有在可执行文件中打包libssh2opensslDLL。

Par::Packer不会自动检测 DLL 依赖项,您需要明确告诉它您的程序需要哪些依赖项(发现程序需要哪些 DLL 的一种简单方法是使用Process Monitor,一种允许监视进程活动的实用程序)。

另一种选择是使用我的模块Win32::Packer来打包自动找到 DLL 依赖项的应用程序。

于 2018-06-25T07:02:46.577 回答