내 상황이 좀 복잡하지만이 방법이 있어야합니다. JNative를 사용하여 응용 프로그램을 여는 Java 프로그램을 구현 중입니다. 이 응용 프로그램은 C++로 작성되었습니다. 그러나 응용 프로그램이 끝나면 Java에 콜백하여 Java에서 실행이 완료되었음을 알 수 있도록합니다. 나는 그것을 어떻게 할 수 있습니까? JNI를 사용해야한다는 것을 알고 있지만 그에 대한 예제는 없습니다. 감사.C++에서 Java 메소드에 콜백
0
A
답변
1
"응용 프로그램 열기"란 외부 프로세스를 시작하거나 라이브러리 호출을하는 것을 의미합니까?
실행 파일을 방금 시작한 경우 Runtime.getRuntime().exec
을 사용하여 프로세스를 시작하고 반환 된 프로세스 핸들을 사용하여 프로세스의 반환 코드를 얻을 수 있습니다. 실행 한 프로세스에서 getInputStream
으로 프로세스 출력을 캡처 할 수도 있습니다.
그러나 실제로 C 프로세스를 호출하는 경우에는 그렇습니다. JNI가 선호되는 솔루션입니다. 당신이 전에 방법을 얻을 필요가 C에서 짧은에서
JNIEXPORT void JNICALL
Java_Callbacks_nativeMethod(JNIEnv *env, jobject obj, jint depth)
{
jclass cls = (*env)->GetObjectClass(env, obj);
jmethodID mid = (*env)->GetMethodID(env, cls, "callback", "(I)V");
if (mid == 0)
return;
printf("In C, depth = %d, about to enter Java\n", depth);
(*env)->CallVoidMethod(env, obj, mid, depth);
printf("In C, depth = %d, back from Java\n", depth);
}
: http://journals.ecs.soton.ac.uk/java/tutorial/native1.1/implementing/method.html
튜토리얼에서 그것의 요점은 이것이다 : 당신은 JNI에 좋은 튜토리얼 다시 여기에 자바 객체에 대한 호출을 찾을 수 있습니다 그것을 부를 수 있습니다. 또한 javap 도구를 사용하여 메서드 서명을 생성 할 수 있으므로 호출 할 수 있습니다.
관련 문제
- 1. C에서 콜백 함수를 구현하려면 어떻게해야합니까?
- 2. Java ScriptEngineManager가 특정 Java 메소드에 액세스하도록 허용
- 3. C에서 리모트 메소드에 리모트 오브젝트를 건네 준다
- 4. 인수가 메소드에 전달되는 순서 (Java)
- 5. 메소드에 Java 애매한 유형이 있습니까?
- 6. Java ServerSocketChannel SocketChannel (콜백)
- 7. Matlab/Java API 콜백
- 8. jQuery 탭 추가 메소드에 대한 콜백 메소드 작성 방법
- 9. params를 레일스의 모델 콜백 메소드에 전달하는 방법은 무엇입니까?
- 10. Java 코드를 사용하여 .NET dll의 메소드에 액세스
- 11. 역순으로 Java 어노테이션을 메소드에 추가 하시겠습니까?
- 12. 각 Java API 함수가 Java 기본 메소드에 맵핑합니까?
- 13. 콜백 함수
- 14. 모든 클래스 메소드의 Java 콜백 함수
- 15. JNI가 원시 메소드에 대한 참조를 잃었습니다.
- 16. ReadLine() 콜백
- 17. Java 메소드에 대한 참조를 나중에 호출 할 수 있습니까?
- 18. 사용자 정의 조건에 따라 Java 메소드에 대한 액세스를 보호하십시오.
- 19. 조상 및 부모 메소드에 액세스하기위한 올바른 (Java) 규칙?
- 20. XSLT-1.0을 통해 Java 메소드에 액세스하는 중 문제가 발생했습니다.
- 21. JavaScript에 전달 된 String 변수에서 Java String 메소드에 액세스하려면 어떻게해야합니까?
- 22. Java : 두 레벨 아래로 부모 클래스 메소드에 어떻게 액세스합니까?
- 23. Java 상속, 익명 내부 클래스 인스턴스 멤버, 안드로이드 콜백 메소드
- 24. 메소드에 동일한 유형의 삭제가 있습니다
- 25. Ubuntu에서 setuid를 사용하여 C에서 Java exec
- 26. Java 또는 C에서 문자의 비트 조작?
- 27. C에서 Java 응용 프로그램에 명령 보내기 #
- 28. Mac에서 Objective C에서 Java 라이브러리 호출
- 29. Python, Java 및 C에서 중첩 루프 비교
- 30. jni의 콜백