首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“Ordinal 112不能位于动态链接库中.”

“Ordinal 112不能位于动态链接库中.”
EN

Stack Overflow用户
提问于 2016-03-22 19:29:17
回答 2查看 1.5K关注 0票数 1

整个错误如下:“序数112不能位于动态链接库D:\GNU编译器\GNUstep\bin\openssl.exe”

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

EN

回答 2

Stack Overflow用户

发布于 2016-03-27 09:35:19

“Ordinal 112不能在动态链接库…中找到”

我推测它的SSLv23_server_methodBN_MONT_CTX_free来自OpenSSL 1.0.2;RSA_PSS_PARAMS_freeSSL_CONF_CTX_clear_flags来自OpenSSL 1.1.0。根据最近的一些变化,我猜它的OpenSSL 1.0.2和SSLv23_server_method

代码语言:javascript
复制
# 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
...

您需要使用dumpbin依赖沃克来验证它。还请参见堆栈溢出上的如何从序号(按序号导出)找到导出的函数名?

序数是使用<openssl src>\util\mkdef.pl创建的。您可以看到OpenSSL的GitHub版本中的源代码。这是1.0.2这里是1.1.0.

以下是文件的标题注释:

代码语言:javascript
复制
#!/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
EN

Stack Overflow用户

发布于 2016-04-04 09:43:42

使用OpenSSL 1.0.2g也出现了同样的问题--缺少的函数是"SSLv2_client_method“(113,丢失的序号消息似乎是一个接一个的)。

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

  • 禁用SSLv2默认生成、默认协商和弱密码。默认情况下,SSLv2在构建时禁用.未配置为“启用-ssl2 2”的构建将不支持SSLv2。
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36163468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档