2013-07-17 3 views
2

JNA를 사용하여 Java 응용 프로그램에서 .dll 파일을 호출하려고합니다. 나는 다음과 같은 예외가 점점 오전 :java.lang.UnsatisfiedLinkError : 라이브러리를로드 할 수 없습니다.

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'C:\Windows\System32\foo.dll': The specified module could not be found.

.DLL 모두를 내가 64 비트 Windows 7 PC에 그것을 실행하고 있지만 내 JDK는 32 비트 (여기서 os_arch = "에는 i586")입니다.
.dll은 System32 폴더에 있습니다.

Eclipse를 사용하고 있으며 JRE 시스템 라이브러리의 네이티브 라이브러리 위치에 Java Build Path Properties의 Libraries 탭 아래에 System32 폴더를 추가했습니다 (필자는 그렇게 생각하지 않지만).

도움이나 제안에 감사드립니다.
고마워요,
-Munk.

답변

1

이것은 file system redirector입니다. 64 비트 시스템에서 32 비트 Windows를 에뮬레이트하는 WOW64 에뮬레이터에서 실행 중입니다. WOW64에서 system32SysWOW64으로 리디렉션됩니다. 거기에 DLL을 넣어야합니다.

이렇게 말하면, 시스템 디렉토리는 시스템 소유이며 사적입니다. DLL을 시스템 디렉토리에 넣지 않을 것으로 예상됩니다. DLL을 다른 위치에 배치하는 방법을 찾아야합니다.

+0

나는이 .dll을 처리 환경에서 많은 기쁨없이 작업하려고 노력 중입니다. 나는 새로운 스레드 [여기] (http://stackoverflow.com/questions/17790090/jna-unsatisfiedlinkerror-in-processing)를 게시했으며 모든 응답에 감사 할 것입니다. 이 스레드에 대한 귀하의 답변은 @ David-Heffernan에게 감사드립니다. –

0

오류의 또 다른 이유는 dll이 64 비트 OS가 아닌 32 버전에서만 지원된다는 것입니다. dll 공급 업체를 확인해야합니다.

+0

거의 사실이 아닐 수 있습니다. 그것이 사실이라면 32 비트 Java가 어떻게 실행될 것입니까? –

0

내 os는 windows-x64이고 jdk는 x64입니다. 문제는 귀하와 동일합니다. 제 해결책은 jdk-x86을 설치하고 jdk-x86/bin 디렉토리에 dll을 넣어야한다는 것입니다.