반응형
개요: C/C++ main 프로그램에서 Java 코드를 호출하는 방법
세부 설명:
C main 프로그램에서 Java를 호출할 수 있습니다. Java 프로그램이 일부 C 언어 메소드를 호출한 다음 C 언어 고유의 메소드가 다시 Java를 호출할 수 있습니다.
그런데 C main 프로그램에서 Java 코드를 호출하는 방법을 묻는 사람이 많습니다.
어떻게 하면 됩니까?
해결 방법 요약:
JDK 1.0.2에서는 C main 프로그램에서 Java 코드를 호출할 수 없습니다. 가장 비슷한 방법은 C 프로그램에서 main() 함수를 호출하는 Java 부트스트랩 프로그램을 만드는 것입니다.
public class BootStrapC {
static { loadLibrary("Cmain");
}
public static void main(String[] args) {
int status = nativeMain(args);
System.exit(status);
}
private int native nativeMain(String[] args);
}
nativeMain()을 C "main()" 함수 대신 사용할 수도 있고, 아니면 이 함수를 사용해서 args[]의 각 요소를 널로 종료되는 C 문자열로 변환한 다음, 이것을 C 함수 main에 배열로 전달할 수도 있습니다. 이 main을 통해 호출된 코드에서 Java 메소드를 호출할 수 있습니다.
JDK 1.1에는 JNI(Java Native Interface)라는 옵션이 추가되었습니다. 이 인터페이스는 Invocation API를 지원하는데, 이 API가 이제는 JNI에 필수적인 인터페이스가 되었습니다. Invocation API를 사용하면 VM을 라이브러리로 로드하고, C에서 바로 Java를 호출할 수 있습니다. 그러면 고유 스레드를 실행중인 Java VM 및 부트스트랩에 추가하는 것처럼 강력한 기능을 할 수도 있습니다.
자세한 내용은 다음 Javasoft 웹 사이트에 있는 JNI 사양과 설명서를 참조하십시오.
http://www.javasoft.com/products/jdk/1.1/docs/guide/jni/index.html
세부 설명:
C main 프로그램에서 Java를 호출할 수 있습니다. Java 프로그램이 일부 C 언어 메소드를 호출한 다음 C 언어 고유의 메소드가 다시 Java를 호출할 수 있습니다.
그런데 C main 프로그램에서 Java 코드를 호출하는 방법을 묻는 사람이 많습니다.
어떻게 하면 됩니까?
해결 방법 요약:
JDK 1.0.2에서는 C main 프로그램에서 Java 코드를 호출할 수 없습니다. 가장 비슷한 방법은 C 프로그램에서 main() 함수를 호출하는 Java 부트스트랩 프로그램을 만드는 것입니다.
public class BootStrapC {
static { loadLibrary("Cmain");
}
public static void main(String[] args) {
int status = nativeMain(args);
System.exit(status);
}
private int native nativeMain(String[] args);
}
nativeMain()을 C "main()" 함수 대신 사용할 수도 있고, 아니면 이 함수를 사용해서 args[]의 각 요소를 널로 종료되는 C 문자열로 변환한 다음, 이것을 C 함수 main에 배열로 전달할 수도 있습니다. 이 main을 통해 호출된 코드에서 Java 메소드를 호출할 수 있습니다.
JDK 1.1에는 JNI(Java Native Interface)라는 옵션이 추가되었습니다. 이 인터페이스는 Invocation API를 지원하는데, 이 API가 이제는 JNI에 필수적인 인터페이스가 되었습니다. Invocation API를 사용하면 VM을 라이브러리로 로드하고, C에서 바로 Java를 호출할 수 있습니다. 그러면 고유 스레드를 실행중인 Java VM 및 부트스트랩에 추가하는 것처럼 강력한 기능을 할 수도 있습니다.
자세한 내용은 다음 Javasoft 웹 사이트에 있는 JNI 사양과 설명서를 참조하십시오.
http://www.javasoft.com/products/jdk/1.1/docs/guide/jni/index.html