【问题标题】:.exe crated using Par::Packer with script containing Net::SSH2 is not working使用 Par::Packer 和包含 Net::SSH2 的脚本创建的 .exe 不起作用
【发布时间】:2018-06-21 11:30:01
【问题描述】:

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

运行 .exe 时遇到以下错误

无法加载 'C:\Users...\AppData\Local\Temp\par-73656172756d7567616d\cache-a6d57d5a234829aae84d08c4a78a09ad307ea8d3\a9057da2.xs.dll' 对于模块 Net::SSH2: load_file: 指定的模块不能是 位于 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?

【问题讨论】:

    标签: perl strawberry-perl net-ssh pp-perl-par-packager perlnetssh


    【解决方案1】:

    您可能没有将libssh2openssl DLL 打包到可执行文件中。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-16
      • 1970-01-01
      • 2014-05-01
      相关资源
      最近更新 更多