我有Perl v5.10。我正在尝试安装Net :: SSLeay 1.30和Crypt :: SSLeay 0.57。 我已经安装了OpenSSL 0.9.8e。
对于Net :: SSLeay 1.30我按照以下步骤操作:
perl Makefile.PL -windows C:\openssl nmake nmake test -- test fails nmake install perl test.pl
但是我得到了一个致命的错误:
D:\perl\Net_SSLeay.pm-1.30>perl -w test.pl 1..20 Can't load 'D:/perl/site/lib/auto/Net/SSLeay/SSLeay.dll' for module Net::SSLeay: load_file:The specified module could not be found at D:/perl/lib/DynaLoader.pm line 203. at test.pl line 25 Compilation failed in require at test.pl line 25. BEGIN failed--compilation aborted at test.pl line 25.
我为Crypt :: SSLeay 0.57获得了相同的结果。
答案 0 :(得分:3)
Randy Kobes an answer for this on the Perl Win32 mailing list。您的PATH环境变量是否包含包含libeay32.dll或ssleay32.dll的目录?
您还可以在Google中找到许多其他答案。在这种情况下,我会收集整个错误消息并将其推送到Google搜索栏。我开始删除部分错误消息,例如特定路径,直到我得到some search results。这几乎总是对我有用,因为我很少是第一个遇到问题的人。
祝你好运,答案 1 :(得分:1)
我对Windows Par :: Packer有类似的问题。生成的myprogram.exe在使用PERL_DL_DEBUG加载rurban的提示时遇到了问题
Can't load 'temp\7e717f68.xs.dll' for module Crypt::SSLeay: load_file:Das angegebene Modul wurde nicht gefunden at <embedded>/DynaLoader.pm line 193.
at <embedded>/PAR/Heavy.pm line 95.
我无法找出pp包含哪些dll。在这些提示之后,我只是使用十六进制编辑器查找dll文件,并找到了以下字符串:libgcc_s_dw2-1.dll-这是要包含的dll进入我的“已编译” exe程序:
pp -M Crypt::SSLeay ^
-l c:/strawberry/perl/vendor/lib/auto/Crypt/SSLeay/SSLeay.xs.dll ^
-l c:/strawberry/c/bin/libgcc_s_dw2-1.dll ....
答案 2 :(得分:0)
共享库通常具有外部依赖关系,并且在某些操作系统上,需要在加载第一个共享库时立即实现这些依赖关系,例如通常需要两个加密库的SSLeay.dll
。在linux上,如果找到了所有库,则可以使用ldd
检查运行时行为。
要调试此项,请添加env var PERL_DL_DEBUG = 5,例如set PERL_DL_DEBUG=5
,然后重试或使用外部工具depends.exe
查看哪些dll确实缺失。
答案 3 :(得分:0)
我在重新安装Strawberry Perl 5.30时遇到了同样的问题。谷歌搜索错误只会给出一堆未回答或一半回答的问题。 Rurban使用 depends.exe 朝着正确的方向发展。打开 ssleay.xs.dll 并等待其完成抛出错误,将显示它依赖的5个主要dll。其中2个是Windows核心dll,3个来自openssl和perl。在草莓安装中,与加密相关的2个dll位于[perlinstallpath]\c\bin
文件夹中。将其添加到您的Windows %PATH%
变量中,它将开始工作。