Java to c ++ jni dll error - java.lang.unsatisfiedlinkerror: ... не могу найти зависимые библиотекиJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Java to c ++ jni dll error - java.lang.unsatisfiedlinkerror: ... не могу найти зависимые библиотеки

Сообщение Anonymous »

Редактировать для описания решения:
Во время разработки, внесение изменений в мой путь < /code> - что правильно показано в новом, свежего окне командной строки - библиотека по -прежнему не может быть найдена. Сегодня, прежде чем добавить все зависимости в java.library.path я запустил ту же сборку compile.bat , которые вчера не удались. Это сработало сегодня !! Единственным изменением было питание ПК/в течение ночи. Перезагрузка, по -видимому, делает путь , хотя он уже был изменен. java.lang.unsatisfiedlinkerror: c: \ users \ bike1 \ jnitest \ hellocpp.dll: не могу найти зависимые библиотеки .
Я пробовал много изменений путей для DLL, аргументы программы для включения и поисковых путей, таких как java.library. Я не могу найти никакой дополнительной информации отладки, чтобы помочь мне.
Мое намерение-Java 64-битный "Temurin-17.0.12+7" (из моих ассоциаций FRC/Wpilib) и C ++ 64 бит с использованием G ++ (для его __builtin_popcount) (GNU C ++ 17 (GCC) версия 15.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. (x86_64-w64-mingw32).
Несколько более сложный, но более полный пример из Интернета, который я пытался обновить и запустить, прикреплен (немного усечен) [используя то, что, вероятно, когда-то работало в случае, если моя попытка MRE-моя ошибка].
, что я пропустил, я не ошибся, или я не могу собрать, чтобы получить больше информации, чтобы получить больше информации, чтобы получить больше информации, чтобы получить больше информации, чтобы собрать больше, чтобы получить больше информации, чтобы получить больше информации, чтобы получить больше информации, чтобы получить больше информации, чтобы получить больше информации, чтобы получить больше информации. />file: compile.bat
@echo on
echo compile java class
set JAVA_HOME=C:\Users\Public\wpilib\2025\jdk
javac -version
type %JAVA_HOME%\release
javac HelloJNI.java
javap -p -s HelloJNI
echo generate header file
javac -h . HelloJNI.java
echo compile DLL
g++ -v
g++ -v -m64 -Wl,--add-stdcall-alias -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" -shared -o HelloCpp.dll main.cpp
echo run java program
java -Djava.library.path=. HelloJNI
rem java HelloJNI
echo Clean up
dir
del *.class; del *.dll, del *.h
pause
< /code>
file: output.txt
C:\Users\bike1\JNItest>compile

C:\Users\bike1\JNItest>echo compile java class
compile java class

C:\Users\bike1\JNItest>set JAVA_HOME=C:\Users\Public\wpilib\2025\jdk

C:\Users\bike1\JNItest>javac -version
javac 17.0.12

C:\Users\bike1\JNItest>type C:\Users\Public\wpilib\2025\jdk\release
IMPLEMENTOR="Eclipse Adoptium"
IMPLEMENTOR_VERSION="Temurin-17.0.12+7"
...
C:\Users\bike1\JNItest>javac HelloJNI.java

C:\Users\bike1\JNItest>javap -p -s HelloJNI
Compiled from "HelloJNI.java"
...
C:\Users\bike1\JNItest>echo generate header file
generate header file

C:\Users\bike1\JNItest>javac -h . HelloJNI.java

C:\Users\bike1\JNItest>echo compile DLL
compile DLL

C:\Users\bike1\JNItest>g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=C:/Program\ Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
...
C:\Users\bike1\JNItest>g++ -v -m64 -Wl,--add-stdcall-alias -I"C:\Users\Public\wpilib\2025\jdk\include" -I"C:\Users\Public\wpilib\2025\jdk\include\win32" -shared -o HelloCpp.dll main.cpp
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=C:/Program\ Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../gcc-src/configure --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --disable-bootstrap --enable-targets=all --enable-languages=c,c++,lto --enable-seh-exceptions --with-arch=core2 --with-tune=generic --enable-threads=posix --disable-nls --enable-shared=libstdc++ --enable-static --enable-libatomic --enable-fully-dynamic-string --enable-lto --enable-plugins --enable-libgomp --with-dwarf2 --enable-mingw-wildcard=platform --disable-win32-registry --enable-version-specific-runtime-libs --enable-checking=release --enable-default-compressed-debug-sections-algorithm=zstd --disable-cloog-version-check --enable-cloog-backend=isl --with-gmp=/home/vm/mingw/host/x86_64-w64-mingw32 --with-mpfr=/home/vm/mingw/host/x86_64-w64-mingw32 --with-mpc=/home/vm/mingw/host/x86_64-w64-mingw32 --with-isl=/home/vm/mingw/host/x86_64-w64-mingw32 --with-cloog=/home/vm/mingw/host/x86_64-w64-mingw32 --with-system-zlib=/home/vm/mingw/host/x86_64-w64-mingw32 --with-zstd --prefix=/mingw64-64 --libdir=/mingw64-64/x86_64-w64-mingw32/lib --libexecdir=/mingw64-64/x86_64-w64-mingw32/lib --with-native-system-header-dir=/x86_64-w64-mingw32/include
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 15.1.0 (GCC)
COLLECT_GCC_OPTIONS='-v' '-m64' '-I' 'C:\Users\Public\wpilib\2025\jdk\include' '-I' 'C:\Users\Public\wpilib\2025\jdk\include\win32' '-shared' '-o' 'HelloCpp.dll' '-mtune=generic' '-march=core2' '-dumpdir' 'HelloCpp.dll-'
C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/cc1plus.exe -quiet -v -I C:\Users\Public\wpilib\2025\jdk\include -I C:\Users\Public\wpilib\2025\jdk\include\win32 -iprefix C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/ -D__USE_MINGW_ACCESS -D_REENTRANT main.cpp -quiet -dumpdir HelloCpp.dll- -dumpbase main.cpp -dumpbase-ext .cpp -m64 -mtune=generic -march=core2 -version -o C:\Users\bike1\AppData\Local\Temp\ccPb8TDw.s
GNU C++17 (GCC) version 15.1.0 (x86_64-w64-mingw32)
compiled by GNU C version 15.1.0, GMP version 6.3.0, MPFR version 4.2.2, MPC version 1.2.1, isl version isl-0.27-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring duplicate directory "C:/Program Files/mingw64/x86_64-w64-mingw32/lib/gcc/../../../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/include/c++"
ignoring duplicate directory "C:/Program Files/mingw64/x86_64-w64-mingw32/lib/gcc/../../../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/include/c++/x86_64-w64-mingw32"
ignoring duplicate directory "C:/Program Files/mingw64/x86_64-w64-mingw32/lib/gcc/../../../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/include/c++/backward"
ignoring duplicate directory "C:/Program Files/mingw64/x86_64-w64-mingw32/lib/gcc/../../../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/include"
ignoring duplicate directory "C:/Program Files/mingw64/x86_64-w64-mingw32/lib/gcc/../../../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/include-fixed"
ignoring duplicate directory "C:/Program Files/mingw64/x86_64-w64-mingw32/lib/gcc/../../../include"
#include "..." search starts here:
#include search starts here:
C:\Users\Public\wpilib\2025\jdk\include
C:\Users\Public\wpilib\2025\jdk\include\win32
C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/include/c++
C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/include/c++/x86_64-w64-mingw32
C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/include/c++/backward
C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/include
C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/include-fixed
C:/Program Files/mingw64/x86_64-w64-mingw32/lib/gcc/../../../include
C:/Program Files/mingw64/x86_64-w64-mingw32/lib/gcc/../../../x86_64-w64-mingw32/include
End of search list.
Compiler executable checksum: df2c0fc215a6149be467677878bc5191
COLLECT_GCC_OPTIONS='-v' '-m64' '-I' 'C:\Users\Public\wpilib\2025\jdk\include' '-I' 'C:\Users\Public\wpilib\2025\jdk\include\win32' '-shared' '-o' 'HelloCpp.dll' '-mtune=generic' '-march=core2' '-dumpdir' 'HelloCpp.dll-'
C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../../x86_64-w64-mingw32/bin/as.exe -v -I C:\Users\Public\wpilib\2025\jdk\include -I C:\Users\Public\wpilib\2025\jdk\include\win32 --64 -o C:\Users\bike1\AppData\Local\Temp\ccLDFbsN.o C:\Users\bike1\AppData\Local\Temp\ccPb8TDw.s
GNU assembler version 2.44 (x86_64-w64-mingw32) using BFD version (GNU Binutils) 2.44
COMPILER_PATH=C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/;C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/;C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../../x86_64-w64-mingw32/bin/
LIBRARY_PATH=C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/;C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/;C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../../x86_64-w64-mingw32/lib//../../x86_64-w64-mingw32/lib/;C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/../../..//../../x86_64-w64-mingw32/lib/;C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../../x86_64-w64-mingw32/lib/;C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/../../../
COLLECT_GCC_OPTIONS='-v' '-m64' '-I' 'C:\Users\Public\wpilib\2025\jdk\include' '-I' 'C:\Users\Public\wpilib\2025\jdk\include\win32' '-shared' '-o' 'HelloCpp.dll' '-mtune=generic' '-march=core2' '-dumpdir' 'HelloCpp.dll.'
C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/collect2.exe -plugin C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/liblto_plugin.dll -plugin-opt=C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\bike1\AppData\Local\Temp\ccp6N7Sb.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -m i386pep --shared -Bdynamic -e DllMainCRTStartup --enable-auto-image-base -o HelloCpp.dll C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../../x86_64-w64-mingw32/lib//../../x86_64-w64-mingw32/lib/dllcrt2.o C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/crtbegin.o -LC:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0 -LC:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc -LC:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../../x86_64-w64-mingw32/lib//../../x86_64-w64-mingw32/lib -LC:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/../../..//../../x86_64-w64-mingw32/lib -LC:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../../x86_64-w64-mingw32/lib -LC:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/../../.. --add-stdcall-alias C:\Users\bike1\AppData\Local\Temp\ccLDFbsN.o -lstdc++ -lmingw32 -lgcc -lmingwex -lmsvcrt -lkernel32 -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmingwex -lmsvcrt -lkernel32 C:/Program Files/mingw64/bin/../x86_64-w64-mingw32/lib/gcc/x86_64-w64-mingw32/15.1.0/crtend.o
COLLECT_GCC_OPTIONS='-v' '-m64' '-I' 'C:\Users\Public\wpilib\2025\jdk\include' '-I' 'C:\Users\Public\wpilib\2025\jdk\include\win32' '-shared' '-o' 'HelloCpp.dll' '-mtune=generic' '-march=core2' '-dumpdir' 'HelloCpp.dll.'

C:\Users\bike1\JNItest>echo run java program
run java program

C:\Users\bike1\JNItest>java -Djava.library.path=. HelloJNI
starting static block
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\bike1\JNItest\HelloCpp.dll: Can't find dependent libraries
at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174)
at java.base/jdk.internal.loader.NativeLibraries.findFromPaths(NativeLibraries.java:315)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:287)
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2427)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818)
at java.base/java.lang.System.loadLibrary(System.java:1993)
at HelloJNI.(HelloJNI.java:7)

C:\Users\bike1\JNItest>rem java HelloJNI

C:\Users\bike1\JNItest>echo Clean up
Clean up

C:\Users\bike1\JNItest>dir
Volume in drive C is Windows
Volume Serial Number is D28C-69C9

Directory of C:\Users\bike1\JNItest

08/18/2025 01:37 PM .
08/18/2025 12:43 PM ..
08/18/2025 01:37 PM 507 compile.bat
08/18/2025 01:37 PM 419 Hello.class
08/18/2025 01:37 PM 70,429 HelloCpp.dll
08/18/2025 01:37 PM 3,609 HelloJNI.class
08/18/2025 01:37 PM 2,094 HelloJNI.h
08/18/2025 12:40 PM 3,376 HelloJNI.java
08/18/2025 11:25 AM 10,838 main.cpp
08/18/2025 12:48 PM 14,481 output.txt
8 File(s) 105,753 bytes
2 Dir(s) 788,597,280,768 bytes free

C:\Users\bike1\JNItest>del *.class; del *.dll, del *.h

C:\Users\bike1\JNItest>pause
Press any key to continue . . .

C:\Users\bike1\JNItest>
< /code>
file: main.cpp
#include
#include
#include
#include
#include "HelloJNI.h"

using namespace std;

static jclass intClass;

JNIEXPORT jdouble JNICALL Java_HelloJNI_sayHello(JNIEnv *env, jobject obj, jint n1, jstring s){
//get the jstring
const char *str = env->GetStringUTFChars(s, 0);
if (str == NULL) return 0.0;
cout FindClass("java/lang/Integer");

//you can save a integer class reference to a global reference for later use (you can't do that for jmethodID and jfieldID they aren't objects)
intClass = (jclass) env->NewGlobalRef(tempIntClass);
//no longer need the local reference
env->DeleteLocalRef(tempIntClass);

//get the methodID of the constructor which takes an int
jmethodID mInit = env->GetMethodID(intClass, "", "(I)V");
if (NULL == mInit) return NULL;
//call back constructor to allocate a new instance with int argument
jobject intObj = env->NewObject(intClass, mInit, number);

//call to call ToString() on this object
jmethodID mToString = env->GetMethodID(intClass, "toString", "()Ljava/lang/String;");
if (NULL == mToString) return NULL;

jstring in_str = (jstring) env->CallObjectMethod(intObj, mToString);
const char* out_str = env->GetStringUTFChars(in_str, NULL);
cout

Подробнее здесь: https://stackoverflow.com/questions/797 ... find-depen
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Java to c ++ jni dll error - java.lang.unsatisfiedlinkerror: ... не могу найти зависимые библиотеки
    Anonymous » » в форуме JAVA
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Java to c ++ jni dll error - java.lang.unsatisfiedlinkerror: ... не могу найти зависимые библиотеки
    Anonymous » » в форуме JAVA
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Java to c ++ jni dll error - java.lang.unsatisfiedlinkerror: ... не могу найти зависимые библиотеки
    Anonymous » » в форуме JAVA
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Java to c ++ jni dll error - java.lang.unsatisfiedlinkerror: ... не могу найти зависимые библиотеки
    Anonymous » » в форуме JAVA
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Как исправить неудовлетворенную ликурнора (не может найти зависимые библиотеки) в проекте JNI
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»