이상한 문제가 있습니다.다른 기본 라이브러리를로드하는 네이티브 라이브러리를 호출 할 때 JNI 문제
에 MyLibrary
--loads DLL_A
----로드
내가에서 LoadLibrary()와 DLL_A를로드 DLL_B, 랩 : 나는 기본적으로 같은 타사 DLL에 대한 래퍼 C++에서 프로젝트를 몇 가지 함수와 내 자신의 DLL을 생성합니다. 나는 이것을 C++ 프로젝트와 C# 프로젝트에서 테스트했다. 둘 다 DLL_A를로드하고 몇 가지 함수를 호출하며 DLL_B를 간접적으로로드해야합니다. 문제는 내가 자바 용 DLL을 만들고 JNI를 통해 호출을 할 때이다. DLL (DLL_A가 DLL_B를로드 할 때가되면 작동하지 않습니다. 디버깅에서 DLL_B로드는 콜백을 사용하는 DLL_A의 함수 호출에서 발생합니다. Java에서 호출 할 때이 함수 호출이 실패한 것처럼 보입니다. (함수 포인터가 좋으며 실제 호출이 문제없이 작동합니다.) DLL_B가로드에 실패하여 프로그램이 대기 중입니다라는 홀수 팝업 창이 나타납니다. 절대로 발생하지 않는 콜백. 나는 DLL_B를 Java와 C++에서 모두 정밀하게로드 할 수 있으며 모든 가능한 경로, 경로 변수를 확인한 다음 dll을 배치하여 어디서나 재미있는 곳을 찾을 수 있는지 확인했습니다. 경로 문제가 아니라고 확신합니다.
궁극적으로 DLL_A가 DLL_B를로드하는 방법을 모르겠지만 모든 것이 C++ 및 C#에서 제대로 작동하지만 Java에서는 작동하지 않는 이유를 알 수 없습니다. 나는 절대적으로 난처했다. 그것은 여전히 내 설정에 특정한 것이 될 수 있지만 (비록 내가 볼 수있는 것처럼 열심히 보았지만),이 시나리오를 던져서 비슷한 문제가 발생했는지 확인합니다.
-Dave