Windows &引用;无法在动态链接库中找到序号112…”;

Windows &引用;无法在动态链接库中找到序号112…”;,windows,ssl,dll,openssl,ordinal,Windows,Ssl,Dll,Openssl,Ordinal,整个错误如下:“无法在动态链接库D:\GNU-C-compiler\GNUstep\bin\openssl.exe中找到序号112” 我在网上搜索了很多关于解决方案的信息,但都没有找到。我最近开始使用OpenSSL进行加密,但在安装过程中,我安装了多个不同版本的软件进行测试,但在删除这些其他版本时,我只是删除了文件夹,而没有执行正确的卸载过程(openssl程序将一些dll保存到windows系统目录中,以便保留这些多个dll)。因此,我相信这些额外的dll是问题的根源(可能),但我找不到一种方

整个错误如下:“无法在动态链接库D:\GNU-C-compiler\GNUstep\bin\openssl.exe中找到序号112”

我在网上搜索了很多关于解决方案的信息,但都没有找到。我最近开始使用OpenSSL进行加密,但在安装过程中,我安装了多个不同版本的软件进行测试,但在删除这些其他版本时,我只是删除了文件夹,而没有执行正确的卸载过程(openssl程序将一些dll保存到windows系统目录中,以便保留这些多个dll)。因此,我相信这些额外的dll是问题的根源(可能),但我找不到一种方法轻松卸载它们,因此我要求合理解决此问题

“在动态链接库中找不到序号112…”

我推测它的
SSLv23_服务器\u方法
BN\u MONT\u CTX\u free
来自OpenSSL 1.0.2;或
RSA\u PSS\u PARAMS\u free
SSL\u CONF\u CTX\u clear\u标志
来自OpenSSL 1.1.0。基于最近的一些变化,我猜测它的OpenSSL 1.0.2和
ssl23_服务器\u方法

# 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
...
您需要使用或进行验证。另请参阅关于堆栈溢出的说明


序号是使用
\util\mkdef.pl
创建的。您可以从OpenSSL的GitHub中看到源代码。和

以下是该文件的标题注释:

#!/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.

使用OpenSSL 1.0.2g也有同样的问题-缺少的函数是“SSLv2_client_method”(113,缺少的顺序消息似乎被关闭了一次)

1.0.2f和1.0.2g之间的变化[2016年3月1日]

  • 禁用SSLv2默认生成、默认协商和弱密码。生成时默认禁用SSLv2。未配置“enable-ssl2”的生成将不支持SSLv2

是的,这意味着与DLL的版本不匹配。您可能可以获得静态链接的版本,或者将DLL的正确版本放在与之相同的目录中?您好,Rup,我可以通过重新安装OpenSSL程序使其正常工作,但可以将ddl保存到本地bin文件夹中,而不是保存在风中ows系统目录