Вызов Golang из Java с использованием JNI в Windows приводит к «Ошибка инициализации библиотеки динамической компоновки (DLL)» - PullRequest
0 голосов
/ 19 февраля 2019

Я создал следующий пример проекта для проверки вызова кода Golang из Java с использованием JNI: https://github.com/blaubaer/golang-jni

Когда я вызываю 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)

Используемая среда:

  • Windows: 10.0.17763, сборка 17763, 64-битная
  • Golang: 1.11.5, windows / amd64
  • Java: 11.0.22019-01-15 LTS, 64-разрядная
  • MinGW-w64: x86_64-8.1.0-win32-sjlj-rt_v6-rev0

Спасибо!

1 Ответ

0 голосов
/ 21 марта 2019

Похоже, что это связано с ошибкой внутри самого Голанга.В настоящее время открыт запрос на извлечение данных время выполнения: это изменение изменяет команду Go для исправления сбоя c-shared dll в Windows x64 # 30944 , где я могу подтвердить, что это решит проблему.

...