2016-03-22 40 views
1

整體錯誤如下:「序號112不能位於動態鏈接庫D:\ GNU-C-compiler \ GNUstep \ bin \ openssl.exe「「The Ordinal 112 could not be located in dynamic link library ...」

我一直在網上尋找很多解決方案無濟於事。我最近開始使用OpenSSL進行加密,但是在安裝過程中,我安裝了多個不同版本的軟件進行測試,但在刪除這些其他版本的過程中,我剛剛刪除了文件夾,而不是執行正確的卸載過程(openssl程序保存了一些DLL進入Windows系統目錄,所以這些多個DLL的保存)。因此,我相信這些額外的DLL是問題的根源(也許),但我無法找到一種輕鬆卸載它們的方法,所以我正在尋求一個合理的解決方案來解決這個問題。

+0

是的,這意味着有一個版本與DLL不匹配。您可能可以獲得一個靜態鏈接的版本,或將正確版本的DLL放在同一個目錄中? – Rup

+0

你好Rup,我能夠通過重新安裝OpenSSL程序得到它的工作,但相反,將ddl保存到本地bin文件夾中,而不是在Windows系統目錄中 – DiscreteTomatoes

回答

-1

「的序號112找不到動態鏈接庫...」

我猜測它的SSLv23_server_method或OpenSSL的1.0.2 BN_MONT_CTX_free;或來自OpenSSL 1.1.0的RSA_PSS_PARAMS_freeSSL_CONF_CTX_clear_flags。根據最近的一些變化,我猜測它的OpenSSL 1.0.2和SSLv23_server_method

# OpenSSL 1.1.0 
$ find $PWD -type f -iname '*.num' -exec grep " 112" {} \; 
RSA_PSS_PARAMS_free      112 1_1_0 EXIST::FUNCTION:RSA 
SSL_CONF_CTX_clear_flags    112 1_1_0 EXIST::FUNCTION: 
... 

# OpenSSL 1.0.2 
$ find $PWD -type f -iname '*.num' -exec grep " 372" {} \; 
BN_MONT_CTX_free      112 EXIST::FUNCTION: 
SSLv23_server_method     112 EXIST::FUNCTION:RSA 
... 

您將需要使用dumpbinDependency Walker進行覈實。有關堆棧溢出,請參閱How can I find the exported function name from ordinal (export by ordinal)?


使用<openssl src>\util\mkdef.pl創建序號。您可以從OpenSSL的GitHub狀態中看到源代碼。 Here is 1.0.2here is 1.1.0

下面是對文件頭註釋:

#!/usr/local/bin/perl -w 
# 
# generate a .def file 
# 
# It does this by parsing the header files and looking for the 
# prototyped functions: it then prunes the output. 
# 
# Intermediary files are created, call libcrypto.num and libssl.num, 
# The format of these files is: 
# 
# routine-name nnnn vers info 
# 
# The "nnnn" and "vers" fields are the numeric id and version for the symbol 
# respectively. The "info" part is actually a colon-separated string of fields 
# with the following meaning: 
# 
# existence:platform:kind:algorithms 
# 
# - "existence" can be "EXIST" or "NOEXIST" depending on if the symbol is 
# found somewhere in the source, 
# - "platforms" is empty if it exists on all platforms, otherwise it contains 
# comma-separated list of the platform, just as they are if the symbol exists 
# for those platforms, or prepended with a "!" if not. This helps resolve 
# symbol name variants for platforms where the names are too long for the 
# compiler or linker, or if the systems is case insensitive and there is a 
# clash, or the symbol is implemented differently (see 
# EXPORT_VAR_AS_FUNCTION). This script assumes renaming of symbols is found 
# in the file crypto/symhacks.h. 
# The semantics for the platforms is that every item is checked against the 
# environment. For the negative items ("!FOO"), if any of them is false 
# (i.e. "FOO" is true) in the environment, the corresponding symbol can't be 
# used. For the positive itms, if all of them are false in the environment, 
# the corresponding symbol can't be used. Any combination of positive and 
# negative items are possible, and of course leave room for some redundancy. 
# - "kind" is "FUNCTION" or "VARIABLE". The meaning of that is obvious. 
# - "algorithms" is a comma-separated list of algorithm names. This helps 
# exclude symbols that are part of an algorithm that some user wants to 
# exclude. 
-1

只好使用OpenSSL 1.0.2g同樣的問題 - 缺少的功能是「SSLv2_client_method」(113,缺少有序消息似乎是關閉的情況-一)。

1.0.2f和1.0.2g [2016年3月1日]

  • 禁用的SSLv2默認的構建,缺省的協商和弱密碼之間變化。在構建時默認禁用SSLv2。未配置「enable-ssl2」的版本將不支持SSLv2。
相關問題