使用Par :: Packer和包含Net :: SSH2的脚本创建的.exe无法正常工作

时间:2018-06-21 11:30:02

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

我在我的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. 试图从便携式版本的草莓Perl中打包
  2. 使用Par :: Packer打包时尝试链接a9057da2.xs.dll

是否存在使用Net:SSH2将perl脚本打包到.exe的任何解决方法或修补程序。 还是有Net :: SSH2的替代方法,可使用公钥(不传递密码)将Windows的ssh从Windows移植到Linux?

1 个答案:

答案 0 :(得分:1)

可能您没有在可执行文件中打包3libssh2 DLL。

openssl不会自动检测DLL依赖关系,您需要明确告诉它程序需要哪些依赖关系(发现程序需要哪些DLL的简单方法是使用Process Monitor,该实用程序可以一个监视流程活动的对象。

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