简体   繁体   English

在Windows上使用JNI从Java调用Golang会导致“动态链接库(DLL)初始化例程失败”

[英]Calling Golang from Java using JNI on Windows leads to “A dynamic link library (DLL) initialization routine failed”

I created the following example project to test out calling Golang code from Java using JNI: https://github.com/blaubaer/golang-jni 我创建了以下示例项目,以测试使用JNI从Java调用Golang代码: https : //github.com/blaubaer/golang-jni

When I call build.cmd I receive an error message like this: 当我调用build.cmd ,会收到如下错误消息:

Exception in thread "main" java.lang.UnsatisfiedLinkError: [...]\out\hello.dll: A dynamic link library (DLL) initialization routine failed
        at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
        at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2430)
        at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2487)
        at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2684)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2649)
        at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:829)
        at java.base/java.lang.System.loadLibrary(System.java:1867)
        at Hello.<clinit>(Hello.java:3)

Used environment: 使用环境:

  • Windows: 10.0.17763, Build 17763, 64bit Windows:10.0.17763,内部版本17763,64位
  • Golang: 1.11.5, windows/amd64 Golang:1.11.5,Windows / amd64
  • Java: 11.0.2 2019-01-15 LTS, 64-Bit Java:11.0.2 2019-01-15 LTS,64位
  • MinGW-w64: x86_64-8.1.0-win32-sjlj-rt_v6-rev0 MinGW-w64:x86_64-8.1.0-win32-sjlj-rt_v6-rev0

Thanks! 谢谢!

It seems to be related to a bug inside Golang itself. 它似乎与Golang内部的错误有关。 There is currently a Pull Request opened runtime: This change modifies Go to fix c-shared dll crash on x64 windows #30944 where I can approve that this will fix the issue. 当前有一个“拉取请求”打开的运行时:此更改修改了Go以修复x64 Windows#30944上的c共享dll崩溃,在这里我可以批准它可以解决此问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 JNI UnsatisfiedLinkError:动态链接库 (DLL) 初始化例程失败 - JNI UnsatisfiedLinkError: A dynamic link library (DLL) initialization routine failed 如何修复 Java 15 JNI “UnsatisfiedLinkError:动态链接库 (DLL) 初始化例程失败” - How to fix Java 15 JNI “UnsatisfiedLinkError: A dynamic link library (DLL) initialization routine failed” 线程“ main”中的异常java.lang.UnsatisfiedLinkError:动态链接库(DLL)初始化例程失败 - Exception in thread “main” java.lang.UnsatisfiedLinkError : A dynamic link library (DLL) initialization routine failed BridJ:加载Clp.dll时出现LoadLibrary错误:动态链接库(DLL)初始化例程失败 - BridJ: LoadLibrary error when loading Clp.dll : A dynamic link library (DLL) initialization routine failed 为什么会出现“ LoadLibrary失败,错误1114:动态链接库(DLL)初始化例程失败”? - Why do I get “LoadLibrary failed with error 1114: a dynamic link library (DLL) initialization routine failed”? 使用JNI从Java调用fortran dll - Call fortran dll from java using JNI 从动态库调用jni时,JVM堆的内存不足 - Not enough memory for JVM heap when calling jni from dynamic library 使用JNI,多线程从Fortran调用Java - Calling Java from Fortran using JNI, multithreading 使用jni从c调用Java函数 - calling java function from c using jni 使用 JNI 从 Java 调用 C 函数 - Calling C function from java using JNI
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM