2012-12-28 2 views
0

dll을 만들지 않고 jni에서 네이티브 함수를 생성 할 수있는 방법이 있습니까? 파이썬에서와 비슷하다. http://docs.python.org/2/extending/embedding.html 섹션 5.4. 임베디드 파이썬 확장JNI에서 함수 선언하기

dll 익스포트 기능을 사용하고 싶지 않습니다.

감사합니다.

+0

DLL 또는 공유 라이브러리를 사용하고 싶지 않으면 JNI를 사용하고 싶지 않습니다. JNI를 사용하려는 이유를 설명 할 수 있습니까? –

+0

나는 JNI를 사용하고 싶지 않다고 말하지 않았다. 나는 jvm을 C++ 프로그램 내에서 만든 것으로 http://www.codeproject.com/Articles/17352/JVM-Launcher와 같이 사용한다. – user1618103

+0

네이티브 메소드가'javah'에 의해 생성 된 메소드를 구현했다면 C++ 프로그램을 콜백 할 수 있습니다. C++에서 Java를 호출하는 IMHO는 가치가있는 것보다 훨씬 고통스럽고 매우 자주 수행되지는 않습니다. 그 이유는 아마도 " 네이티브 (native) "문서가 DLL에 관해 이야기 할 가능성이 있습니다. –

답변

0

기술적으로 가능합니다.

약 6 년 또는 8 년 전 JVM을 생성하고 Java 클래스에 액세스 한 C++ 구현 (codeproject 사이트에서 제공됨)을 보았습니다. 그다지 인기가 없으며, 여기에 열거 된 많은 사람들에게 있습니다.하지만 가능합니다.

난 강력하게 원하지 않는 정확히, 다른 측면을 수행하는 것이 좋습니다 : dll을 정도,하지만 많은 이유에 호출 자바,하지만 당신에게 달려있다 ...

0

아마도 JNA 무엇을합니까 너는 원하는가?

1

네이티브 응용 프로그램에 VM을 포함시키고 C/C++에서 Java를 호출 한 다음 Java에서 다시 C/C++로 콜백 할 수 있습니다. Invocation API in JNI documentation을 참조하십시오. 이렇게하면 동적 연결 (DLL)이 필요 없습니다. 기본 메소드 (예 : ASM)로 바이트 코드를 생성 한 다음 필요한 C/C++ 함수 포인터를 RegisterNatives으로 등록하여 런타임시 클래스를 동적으로 생성 할 수도 있습니다.