当前位置: 首页 > 知识库问答 >
问题:

netty-tcnative-openssl-static-2.0。28.Final-windows-x86_64。jar动态链接到openssl

赵智勇
2023-03-14

在构建netty-tcnate-openssl-stest-2.0.28之后。final-windows-从源x86_64,使用创建的jar文件在运行时导致未解决的依赖项错误:

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

也许这是由内急引起的。依赖于openssl dll的dll:

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吗。动态链接库?

构建是使用Windows 10,x86 x64交叉工具完成的Microsoft Visual Studio专业2015版本14.0.25420.01更新3

共有1个答案

陈项禹
2023-03-14

openssl构建将导入库复制到目标目录

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

不是静态库。这些是tcnetty_native建造的。

但是,静态库也是通过openssl构建创建的

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

作为一种解决方法,复制_static。将lib版本放入目标目录,替换非静态版本确实有帮助。注意,这也需要包括msvcrt。lib作为附加依赖项。在netty tcnative\vs2010中。vcxproj。静止的模板:

<AdditionalDependencies>mswsock.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;psapi.lib;apr-1.lib;msvcrt.lib;@SSL_LIBS@;%(AdditionalDependencies)</AdditionalDependencies>
 类似资料:
  • 在深入研究我的问题时,解释了atg gRpc在netty失败中使用SunPKCS11进行TLS客户端身份验证,我更改了netty-tcnative-boringssl的版本。我房子里的罐子。Gradle来自 到 导致: +---io.netty:netty-tcnative-boringssl-static:+->2.0.1.final 之所以这样做,是因为根据Netty的javadoc方法也适用

  • 我正在使用Gradle shadow jar插件为硒制作一个胖罐。以下代码在Gradle kts中声明: 它在我的计算机上编译成功,但在云上编译时我遇到以下错误: 奇怪的是,我的电脑上也找不到有问题的jar“netty-transport-native-epoll-4.1.76.Final-linux-x86_64”。该名称似乎是从运行构建的底层操作系统自动生成的。 如果使用maven和maven

  • 我用的是同一种概念,我在第一节课上用过 但当我运行类Test2时,它给出了输出5。 我想知道初始化是什么时候发生的?我知道静态变量在编译时获得值。但是静态决赛呢?这个变量什么时候得到它的值?

  • 问题内容: 我已经从源代码构建了OpenSSL(一个有意的旧版本;使用来构建),并且更愿意使用我所构建的内容,而不用链接到我的程序。 失败的命令是: 并且我收到一系列类似于以下的错误: 这使我认为我的OpenSSL有点时髦。如果我从命令中省略,则错误变为无法执行以下操作: 我是否编译不正确的OpenSSL?还是我应该如何最好地解决这个问题? 问题答案: 愚蠢的“ Linux-isms”再次罢工!很

  • 问题内容: 在Java中,有人教导说应该对变量进行私有化以实现更好的封装,但是静态常量呢?这个: 结果将等同于此: 但是哪种更好的做法? 问题答案: 有一个原因不直接在代码中使用常量。 假设FOO稍后可能会更改(但仍保持不变)。只要没有人愚蠢到直接对值进行硬编码就不会破坏任何内容吗? 否。Java编译器会将上面的Foo等常量内联到调用代码中,即变成。现在,如果您重新编译库而不是重新编译调用代码,则

  • 静态链接方法:静态链接的时候,载入代码就会把程序会用到的动态代码或动态代码的地址确定下来 静态库的链接可以使用静态链接,动态链接库也可以使用这种方法链接导入库 动态链接方法:使用这种方式的程序并不在一开始就完成动态链接,而是直到真正调用动态库代码时,载入程序才计算(被调用的那部分)动态代码的逻辑地址,然后等到某个时候,程序又需要调用另外某块动态代码时,载入程序又去计算这部分代码的逻辑地址,所以,这