无法为模块XML :: LibXML加载'C:/strawberry/perl/site/lib/auto/XML/LibXML/LibXML.dll'

Jit*_*ann 4 perl perl-module cgi-bin windows-xp-sp3 xml-libxml

我已经下载了草莓PERL并在Winxp sp3上用CGI Perl Apache编写了一个应用程序.我使用的其中一个库(由其他人编写)使用XML :: LibXML.当我加载页面时,它给出了内部服务器错误.从Apache错误日志中我可以看到此错误:
无法为模块XML :: LibXML加载'C:/strawberry/perl/site/lib/auto/XML/LibXML/LibXML.dll':load_file:指定的模块无法可以在C:/strawberry/perl/lib/DynaLoader.pm第190行找到
.C:/strawberry/perl/site/lib/auto/XML/LibXML/LibXML.dll存在所有权限.此库也适用于Linux.如果我删除所有需要LibXML的代码,我的应用程序也可以正常工作.
任何人都可以告诉我何时可以在这里发布问题.

Mic*_*man 8

如果您查看DynaLoader的来源,您会发现

许多动态扩展加载问题似乎来自这部分代码:XYZ在DynaLoader.pm的第123行失败.这些错误通常发生在扩展XS文件的初始化C代码中.Perl仅将错误报告为此perl代码,因为这是它执行的最后一个perl代码.

您应该已经(但可能没有注意到)以下对话框,它提供了更准确的错误消息:

缺少libxml2.dll

问题不在于perl找不到LibXML.dll; 这是LibXML.dll无法找到真正的libxml.(前者只是为后者提供Perl绑定的包装器.)要解决此问题,您需要确保Strawberry Perl的c\bin文件夹位于PATH中.在你的情况下,那将是C:\strawberry\c\bin.


小智 1

您可能需要检查Windows中的环境变量设置,确保模块的安装路径存在于PATH变量中。它在Linux中工作的原因是make文件通常会在Linux中为您设置环境变量,而在Windows中它可能没有正确设置。例如;转到控制面板\系统和安全\系统,单击更改设置,然后单击用户变量部分中的高级选项卡,查看是否有名为 perl5lib 的变量。如果没有创建一个新的 perl5lib 变量并添加库的路径(通常为 C:\Perl\site\lib 但在您的情况下可能有所不同)