netty-tcnative-openssl-stati c -2.0.28.Final- windows -x86_64.jar динамически связывается с openssl - PullRequest
0 голосов
/ 07 февраля 2020

После построения netty-tcnative-openssl-stati c -2.0.28.Final- windows -x86_64 из источников использование созданного файла JAR приводит к неразрешенным ошибкам зависимости во время выполнения:

Suppressed: java.lang.UnsatisfiedLinkError: AppData\Local\Temp\1\netty_tcnative2630860948705617016.dll: Can't find dependent libraries

Возможно, это вызвано тем, что netty_tcnative.dll имеет зависимости от dll openssl:

dumpbin /dependents openssl-static\target\native-build\target\x64-release\lib\netty_tcnative.dll
Image has the following dependencies:

    libssl-1_1-x64.dll
    libcrypto-1_1-x64.dll
    KERNEL32.dll
    WS2_32.dll

Любая идея, почему они не будут статически связаны в netty_tcnative.dll?

Сборка была выполнена с использованием Windows 10, x86 x64 Cross Tools Microsoft Visual Studio Professional 2015 версия 14.0.25420.01, обновление 3

1 Ответ

0 голосов
/ 07 февраля 2020

Сборка openssl копирует библиотеки импорта в целевой каталог

netty-tcnative\openssl-static\target\ssl\lib, 

not stati c библиотеки. Это те, которые подобраны сборкой tcnetty_native.

Однако библиотеки stati c также создаются с помощью сборки openssl

netty-tcnative\openssl-static\target\openssl-1.1.1d\*_static.lib 

В качестве обходного пути, копируя версии _stati c .lib в целевой каталог, заменяя non_stati c версии помогли. Обратите внимание, это также требует включения msvcrt.lib в качестве дополнительной зависимости. В netty-tcnative \ vs2010.vcxproj.stati c .template:

<AdditionalDependencies>mswsock.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;psapi.lib;apr-1.lib;msvcrt.lib;@SSL_LIBS@;%(AdditionalDependencies)</AdditionalDependencies>
...