2012-07-13 94 views
3

我已經下載了草莓PERL並在Winxp上用CGI Perl Apache編寫了一個應用程序SP3)。 我使用的一個庫(由其他人編寫)使用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的代碼,我的應用程序也可以正常工作。
任何人都可以告訴我什麼時候可以在這裏發佈問題。無法爲模塊XML加載'C:/strawberry/perl/site/lib/auto/XML/LibXML/LibXML.dll':: LibXML

+0

我安裝了activeperl並使用PPM下載了XML :: LibXML包。它剛剛工作! – 2012-07-14 12:31:25

+0

這是因爲XML :: LibXML所需的DLL文件包含在PPM中,但是在Strawberry perl上(或者在unix發行版上),系統使用了該庫的副本。只需從相應的源代碼安裝LibXML2即可。 – 2012-07-20 06:58:01

+0

>只需從相應的源代碼安裝LibXML2 ... LoL @'簡單' – 2012-07-20 22:43:20

回答

1

您可能需要檢查窗口中的環境變量設置, 確保模塊的安裝路徑存在於PATH變量中。 它在linux中工作的原因是make文件通常會在Linux中爲你設置環境變量,但它可能沒有正確設置。例如: 轉到控制面板\系統和安全\系統單擊更改設置,然後在用戶變量部分中的高級選項卡查看是否有一個名爲perl5lib的變量。 如果不創建一個新的變量PERL5LIB和添加庫的路徑(usuall C:\ Perl的\ site \ lib文件,但可能在你的情況不同)

4

如果你不期而遇的源動態加載,你會發現

Many dynamic extension loading problems will appear to come from this section of code: XYZ failed at line 123 of DynaLoader.pm. Often these errors are actually occurring in the initialisation C code of the extension XS file. Perl reports the error as being in this perl code simply because this was the last perl code it executed.

你應該也得到了(但可能沒有注意到),下面的對話框,它提供了一個更準確的錯誤消息:

libxml2.dll is missing

的問題不是perl的找不到LibXML.dll;這就是LibXML.dll找不到真正的libxml。 (前者只是爲後者提供Perl綁定的包裝器。)要解決該問題,需要確保Strawberry Perl的c\bin文件夾位於PATH中。在你的情況下,這將是C:\strawberry\c\bin

+0

這是相當古老的,但它爲我工作。 不要忘記在環境變量中設置PATH後重新加載cmd窗口..(它花了我15分鐘才明白是問題所在) – Arcyno 2015-07-20 08:51:47