2014-12-10 2 views
1

문제점 : JNI로 자체 생성 된 DLL에서 작업 중입니다. Visual Studio 2013에서 64Bit 컴퓨터 용 DLL을 생성했습니다. DLL이 실제로 64 비트라면 Dependency Walker에 이미 확인했습니다. 그런 다음 Java 소스 (Eclipse 버전 : Luna Service Release 1 (4.4.1) Java 버전 1.7.0_71-b14 64 비트 버전)에서 DLL을 사용하려고했습니다.AMD 64 비트 플랫폼에서 IA 32 비트 .dll을로드 할 수 없습니다. JNI

Java 프로그램을 실행할 때 errormessage가 발생합니다.이 줄의 AMD 64 비트 플랫폼에서 IA 32 비트 .dll을로드 할 수 없습니다.

 static 
    { 
     System.loadLibrary("iomemjava"); 
    } 

저는 이미이 문제에 2 일을 소비했으며 stackoverflow 및 기타 포럼을 검색했습니다. 나는 아마도 잘못된 것일 수있는 아이디어에서 벗어났습니다.

지금까지와 희망에 당신이 남자와 여자는 마틴

+0

당신은 말할 zip 파일의 .DLL로 바람둥이 빈에서 .DLL를 교체 enter image description here

마지막 X64 폴더 아래 tcnative-1.dll을 찾을 의견이 맞지 않는다. 컴퓨터가 맞을 수도 있습니다. 올바른 버전의 DLL을 가져오고 있습니까? – Jesper

+0

예, DLL이 64 비트는, 종속성 워커 및 Visual Studio 나에게 그런 말해야한다는 DLL에서 또한 모든 64 비트 (DW)입니다. 또한 테스트를 위해 32 비트 DLL을 생성했습니다. DLL이 64 비트처럼 모든 것이 다 같아요. 아마도 Dependency Walker 또는 Visual studio에서 실수를 저질렀을 수도 있습니다. 그러나 그들은 내가 분명히 다음 자바 64 비트 버전 대신 32 비트 테스트 DLL을 따기 두 번 – Martin

+0

모든 것을 확인하지 말았어야. 어디 DLL을 찾을하는 자바를 알 수있는 방법에 대한 내 대답은 아래를 참조하십시오. – Jesper

답변

3

자바 네이티브 라이브러리를 찾기 위해 경로로 시스템 프로퍼티 java.library.path을 사용 할 수 있습니다. 응용 프로그램을 시작할 때 -D 옵션을 사용하여 명령 줄에서이 속성을 정의하고 DLL이 포함 된 디렉터리를 가리 키도록하십시오. 예를 들어 :

C:\MyProject\nativelib
C:\MyProject> java -Djava.library.path=C:\MyProject\nativelib com.mypackage.MyProgram 

사용하려는 DLL이 들어있는 디렉토리입니다.

+0

감사합니다 : D는 내가 그런 식으로 변경하고 지금은 컴파일 : 지금은 다른 오류가 발생했습니다 D하지만 코딩의 DLL 만에 유형과 상관없는 내가 나 자신을 할 수있는 일 이잖아 : D 감사를 당신 :) – Martin

관련 문제