簡體   English   中英

LoadLibrary:找不到指定的程序

[英]LoadLibrary: The specified procedure could not be found

我需要在 Windows 2003 服務器(是的,在 2019 年)中提取有關系統進程的一些內容,我在 python 中編寫了該代碼,並使用auto_py_to_exe對其進行了auto_py_to_exe

當我在服務器上運行.exe文件時,我收到一條錯誤消息"LoadLibrary: The specified procedure could not be found." 指的是python37.dll

我嘗試像一個目錄一樣編譯(包含特定的 dll),我嘗試像一個文件一樣編譯,我得到以下輸出

Python 3.7Win 2003之間的差距太大。 查看[Python.Wiki]:WindowsCompilers Python 3.7甚至沒有列出(因為它是使用VStudio 2017構建的)。 那(和Python本身)將需要/調用Win 2003系統.dll中不存在的函數。

這是一個例子。 在下面的圖像中,我使用Dependency Walker打開了2個版本的( 2.73.7 )主.dll文件

圖0

如圖所示,兩者都從kernel32.dll導入了一堆函數。 但是一個區別是python37.dll導入GetTickCount64 根據[MS.Docs]:GetTickCount64函數 ,支持該功能的最低Server版本是Win 2008 ,這意味着它在Win 2003中將無法使用

因此,您必須回到python 2.7 (頂部)。 幾年前,我已經用VStudio 2010構建了Python 2.7.10 ,並且可以在Win 2003 (和XP SP 1 )上運行。 最有可能的是,這也適用於最新的( 2.7 )版本。

請注意,您還必須安裝腳本中使用的所有軟件包(包括auto-py-to-exe )。

@ EDIT0

我記得(並剛剛檢查過)我在XPSP 3PC上安裝了Python 3.4.3 因此, Python 33.5之前的版本)很有可能在Win 2003上運行

@ EDIT1

最后,我有一些官方聲明:在Python官方頁面上,將鼠標懸停在“ 下載 ”按鈕上會產生:

請注意,Python 3.5+ 不能在Windows XP或更早版本上使用。

或(更清晰):

圖1

請注意, 這不一定意味着可以保證較早的版本可以工作。 因此,您需要做一些測試(我建議在目標計算機上安裝Python和必需的軟件包,並且只有在一切都成功后才進行打包)。

@ EDIT2

我提到我已經構建了Python2.7版本。 psutil 是其中的一部分。

 >>> import sys, platform, psutil >>> sys.version, sys.platform ('2.7.10 (default, Mar 8 2016, 15:08:43) [MSC v.1600 32 bit (Intel)]', 'win32') >>> platform.platform() 'Windows-XP-5.1.2600-SP3' >>> psutil.__version__ '3.1.1' 

我沒有提到我建立psutil來源,但預建.whl S和也贏得安裝程序可供下載: [PyPI中]:psutil 3.1.1 -下載文件

最后我使用了python 2.7.9和py2exe,它解決了,但是PSutil不兼容Windows 2003 Server:c

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM