나는 jni에서 this tutorial을 따르고 있습니다.JNI가 native 메소드를 찾을 수 없습니다. (test Test.java : 11 : 심볼을 찾을 수 없습니다.)
1) 단계에있어서
public native static int getDouble(int n);
2)의 집계로 테스트 \ Test.java의 파일을 만들고 헤더 파일을 생성. VC 프로젝트에 test_Test.h을 붙여 복사)
%JAVA_HOME%\include;%JAVA_HOME\include\win32\
(5)을 포함하는 DLL)
4) 변경된 프로젝트 속성 : (javac의, javah의)
3)는 VC Win32 프로젝트 (응용 프로그램 유형을 만든 .
6) 구축> Confugration 관리자 솔루션 + 복사가 전화를 포함 Test.java 클래스 경로
8) 변경 Test.java에 .dll 파일을 결과 빌드 64에 (변경 플랫폼)
7) 네이티브 funciton 호출.
package test;
public class Test {
public native static int getDouble(int n);
public static void main(String[] args) {
System.loadLibrary("jni_example");
for (int n = 1; n <= 20; n++) {
System.out.println(n + " x 2 = " + getDoubled(n));
}
}
}
9) 컴파일 테스트를 다시 시도하면 문제가 발생합니다.
D:\workspace\jni_example>ls
jni_example.dll test test_Test.h
D:\workspace\jni_example>javac -classpath . test\Test.java
test\Test.java:11: cannot find symbol
symbol : method getDoubled(int)
location: class test.Test
System.out.println(n + " x 2 = " + getDoubled(n));
^
1 error
나는 System.out 라인을 주석 처리 할 때 아무 것도 인쇄하지 않고 당연히 잘 작동합니다.
D:\workspace\jni_example>java -version
java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) 64-Bit Server VM (build 20.5-b03, mixed mode)
어디서 이런 문제가 있습니까?
@ShafikYaghmour "참조"가 잘못되었습니다. 네이티브 메소드'getDouble()'을'getDoubled()'로서 호출해야하는 이유는 무엇입니까? –
@ShafikYaghmour 참고 문헌에도이 오타가 있습니다. –
그것은 일했다! 고마워! 나는 cpp 파일에서 변경해야했다, 나는 5 분 안에 asnwer를 받아 들일 수 없다. 나중에 할 것이다. 다시 고마워요 :) –