2010-08-11 6 views
0

JNI를 사용하여 Java 응용 프로그램에 네이티브 C++ 라이브러리를 연결하고 있습니다. System.loadLibrary()를 사용하여 라이브러리를로드했는데 모든 것이 제대로 작동하는 것 같습니다. 타사 소프트웨어 시스템에서 다른 여러 dll을 호출하는 C++ dll에이 기능을 추가했습니다. 불행히도 이러한 dll 중 하나는 ZIP.dll이라는 이름입니다. 자바 loadLibrary 연산은 내 프로젝트 디렉토리를보기 전에 /jre/bin에 의존하는 dll을 찾아서 사용하려고 시도한다. 두 dll은 동일하지 않으므로 지정한 프로 시저를 찾을 수 없다는 UnsatisfiedLinkError가 나타납니다.JNI - System.LoadLibrary() 잘못된 종속 DLL을 찾습니다

dll을로드 할 때 종속 라이브러리를 찾을 위치를 java에 알려줄 수 있습니까?

답변

2

나는 System.loadLibrary이 전체 트렌드를 수행해야한다고 생각하지만 System.load을 믿는다.

+0

내 라이브러리는 zip.dll이라는 보조 라이브러리에 종속됩니다. System.load는 내 라이브러리에 대한 경로를 지정할 수있게 해줍니다 ... 그 시점에서 Java는 모든 종속 라이브러리를 찾고 나가서 잘못된 라이브러리를 찾습니다. 종속 라이브러리에 대한 경로를 지정하는 방법이 필요합니다 ... – Kyle

+0

'zip.dll'에 System.load, 라이브러리에 System.load가 있습니까? – KitsuneYMG

0

동시에 두 개의 다른 DLL을 같은 이름으로로드 할 수 있다고 생각하지 않습니다. 올바른 ZIP.dll이 먼저로드되도록 (이렇게하면 jvm에 문제가 발생할 수 있음) 경로에 대한 순서를 변경하거나 ZIP.dll 파일의 이름을 다른 것으로 변경할 수 있습니다. ZIP.dll의 이름을 바꾸는 것이 아마도 가장 쉬운 방법 일 것입니다.

관련 문제