jkeenan1 has asked for the wisdom of the Perl Monks concerning the following question:

I am writing an application in which a user will make a call to a server using the https protocol. The user will have Perl's LWP module installed, but LWP also requires OpenSSL and Crypt::SSLeay to work. I have gotten all this set up and working on Linux but am having problems setting this up on my Windows test box.

I am assuming that the user will have ActivePerl installed and has the technical competence to install OpenSSL for Windows as well as a ppm for Crypt::SSLeay. As is well documented, ActiveState cannot ship a ppm of Crypt::SSLeay, but such a ppm is available from Randy Kobes' repository. I have installed ActivePerl on the test box (which I've done many times before) as well as OpenSSL. And I think I have correctly installed Crypt::SSLeay.

C:\Client>perldoc -l Crypt::SSLeay C:\Perl\site\lib\Crypt\SSLeay.pm
... which is the expected location for non-core modules.

However, when I go to build the application -- which is bundled as a normal, CPAN-style tarball -- I get the following:

C:\client>perl Makefile.PL Warning: prerequisite Crypt::SSLeay 0 not found. Writing Makefile for Perl::APIClient
perl Makefile.PL fails to find Crypt::SSLeay, even though it's installed in the correct location, and even though the script can successfully locate other non-core Perl modules installed in C:\Perl\site\lib\. make runs without error, but, not surprisingly, make test fails at the point where an https call is first attempted.

Can anyone suggest what I'm missing? Thank you very much.

Jim Keenan

Replies are listed 'Best First'.
Re: Crypt::SSLeay not found by Makefile.PL on Win32
by Joost (Canon) on Dec 06, 2006 at 16:42 UTC
      An excellent suggestion. Here's what I got:

      Can't load 'C:/Perl/site/lib/auto/Crypt/SSLeay/SSLeay.dll' for module +Crypt::SSLeay: load_file:Access is denied at C:/Perl/lib/Dynaloader.p +m line 230. at -e line 0 Compilation failed in require. BEGIN failed--compilation aborted.
      Can you suggest how to proceed from here? Thank you very much.
      Jim Keenan
        Hmm.. first make sure that that dll actually exists and is readable to the relevant user(s).

        If that doesn't show any obvious problems, take a good look at the docs for Crypt::SSLeay. Especially the compatibility notes, the win32 notes and the openssl dependency.

        I can't really provide you with more windows help, since I hardly use windows.

        update: also, apparently activestate perl can be quite picky about the compiler used to build it's extensions. if possible try to figure out the exact compiler used to build perl and build openssl & the module with that.