1, Java 호출 C++ 로 작성된 dll, JNI 또는 Jawin 오픈 소스 프로젝트를 사용할 수 있습니다 (두 번째 방법 권장).
2, C++ 는 JNI (Java 네이티브 인터페이스) 를 통해 Java 클래스와 상호 작용하는 Java 변수, 메서드를 호출합니다.
--절차 (두 번째만 요약)----
(1) VC 6. 컴파일 C++ 프로그램, 개발 환경 설정: 도구-"옵션-"도구; Libary files 아래에서 LIB 디렉토리 c: ₩ program files ₩ Java ₩ JDK 1.5. ₩ lib 를 추가합니다. 는 exe 파일로 컴파일됩니다.
실행기 환경 설정: Path 환경 변수 추가: c: \ program files \ Java \ jdk1.5. \ JRE \ bin \ client (jvm. ) v ");
//([Ljava/lang/String; ) v 는 main () 서명
가 Java 프로그램 디렉토리에서 실행: javap -s -p ClassDemo (참고: ClassDemo.java 가 컴파일됨)
main 아래 명령문 가져오기 ) V
(3) 코드 예:
java 프로그램
import java.io.*;
public class demomain {
public static void main (string [] args) throws java.io.io exception
}
}
C++ 프로그램:
# ifndef _ _ cplusplus
# define _ _ cplusplus < p Stdio.h>
#include < Stdlib.h>
#include < Windows.h>
# pragma comment (lib, "c: \ \ program files \ \ Java \ \ jdk1.5. \ \ lib \ 4129
voidmain () {
loadlibrary ("c: \ \ program files \ \ Java \ JRE 1.5. //dll
JavaVM *jvm 동적 호출 :
JNIEnv *env;
JavaVMInitArgs vm_args;
자바 옵션 옵션 [3];
options []. optionstring = "-djava.com piler = none";
옵션 [1]. optionstring = "-djava.classpath =.";
옵션 [2]. optionstring = "-verbose: JNI";
VM _ args.version = JNI _ version _ 1 _ 4;
VM _ args.n 옵션 = 3;
vm_args.options = options;
VM _ args.ignoreunrecognized = JNI _ true;
jintres = JNI _ create javavm (& Jvm, (void**)& Env, & Vm_args); //가상 시스템 생성
if (res < ) {
fprintf (stderr, "can't create Java VM \ n");
종료 (1);
};
jclass cls = env-> FindClass("DemoMain ");
if (cls = = ) printf ("sorry, I can't find the class");
fprintf (stdout, "this is invoke simplified 4 .. \ n");
jmethodID get_main_id;
if(cls! = null)
{
get _ main _ id = env-> Getstaticmethodid (cls, "main", "([ljava/lang/string; ) v ");
fprintf (stdout, "this is invoke simplified 5 .. \ n");
if(get_main_id! = null)
{
jclassstring = env-> FindClass("java/lang/String ");
jobjectArray args = env-> New object array (, 문자열, null);
fprintf (stdout, "this is invoke simplified 6 .. \ n");
int I = env-> Callintmethod (cls, get _ main _ id, args);
fprintf (stdout, I+"this is invoke simplified 7. \ n");
}
}
jvm-> DestroyJavaVM ();
fprintf (stdout, "Java VM destory \ n");
}