我在我的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行。
试图解决以下方法,但没有一个起作用
是否存在使用Net:SSH2将perl脚本打包到.exe的任何解决方法或修补程序。 还是有Net :: SSH2的替代方法,可使用公钥(不传递密码)将Windows的ssh从Windows移植到Linux?
答案 0 :(得分:1)
可能您没有在可执行文件中打包3
和libssh2
DLL。
openssl
不会自动检测DLL依赖关系,您需要明确告诉它程序需要哪些依赖关系(发现程序需要哪些DLL的简单方法是使用Process Monitor,该实用程序可以一个监视流程活动的对象。
另一种选择是使用我的模块Win32::Packer来打包确实会自动找到DLL依赖项的应用程序。