... "Can't find ordinal 372 in DLL-file C:\wamp64\bin\apache\apache2.4.17\bin\openssl.exe"
sto speculando sua PEM_SealInit
o SSL_CONF_cmd_argv
da OpenSSL 1.0.2; oppure ASN1_i2d_fp
o SSL_SESSION_set1_id_context
da OpenSSL 1.1.0.
# OpenSSL 1.1.0
$ find $PWD -type f -iname '*.num' -exec grep " 372" {} \;
ASN1_i2d_fp 372 1_1_0 EXIST::FUNCTION:STDIO
SSL_SESSION_set1_id_context 372 1_1_0 EXIST::FUNCTION:
...
# OpenSSL 1.0.2
$ find $PWD -type f -iname '*.num' -exec grep " 372" {} \;
PEM_SealInit 372 EXIST::FUNCTION:RSA
SSL_CONF_cmd_argv 372 EXIST::FUNCTION:
...
Sarà necessario verificarlo utilizzando dumpbin
o Dependency Walker. Vedi anche How can I find the exported function name from ordinal (export by ordinal)? su Stack Overflow.
Gli ordinali vengono creati utilizzando <openssl src>\util\mkdef.pl
. Puoi vedere il codice sorgente dalla presenza di GitHub di OpenSSL. Here is 1.0.2 e here is 1.1.0.
Ecco i commenti di testa per il file:
#!/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.
Vedere anche [Wamp2 e "L'ordinale 942 non può essere posizionato nella libreria di collegamento dinamico LIBEAY.dll"] (http://stackoverflow.com/q/6178815/608639), [WAMPx64/Openssl Ordinal 372 non può essere localizzato] (http://stackoverflow.com/q/38046271/608639), [Impossibile trovare l'ordinale 372 in WAMP/Apache's openssl.exe] (http://stackoverflow.com/q/36238887/608639), ["Impossibile trovare l'ordinale 112 nella libreria di collegamento dinamico ..."] (http://stackoverflow.com/q/36163468/608639), ecc. – jww