C 애플리케이션에서 Java 메소드 호출
교차 플랫폼 통합 영역에서는 서로 다른 프로그래밍 언어 간에 원활하게 상호 작용하는 능력이 무엇보다 중요합니다. . 그러한 시나리오 중 하나는 C 애플리케이션 내에서 Java 함수를 호출하는 것입니다.
간단하지는 않지만 실제로 이 기능은 반성적인 접근 방식을 통해 달성할 수 있습니다. JNI(Java의 기본 인터페이스)를 활용하여 C는 JVM(Java Virtual Machine)과 상호 작용할 수 있습니다. 프로세스에 대한 자세한 설명은 다음과 같습니다.
JVM(Java Virtual Machine) 생성:
Java 객체 얻기:
Java 메서드를 찾습니다:
Java 메소드 호출:
결과 추출:
정리:
예제 코드:
#include <jni.h> #include <stdio.h> int main() { JavaVM *vm; JNIEnv *env; JavaVMInitArgs vm_args; vm_args.version = JNI_VERSION_1_2; vm_args.nOptions = 0; vm_args.ignoreUnrecognized = 1; // Construct a VM jint res = JNI_CreateJavaVM(&vm, (void **)&env, &vm_args); // Construct a String jstring jstr = env->NewStringUTF("Hello World"); // Find the class and method jclass clazz = env->FindClass("java/lang/String"); jmethodID to_lower = env->GetMethodID(clazz, "toLowerCase", "()Ljava/lang/String;"); // Call the method jobject result = env->CallObjectMethod(jstr, to_lower); // Get the C-style string const char *str = env->GetStringUTFChars((jstring)result, NULL); printf("%s\n", str); // Clean up env->ReleaseStringUTFChars(jstr, str); vm->DestroyJavaVM(); return 0; }
Linux에서 코드를 컴파일하려면 다음을 실행하세요.
g++ -I/usr/lib/jvm/java-6-sun/include -I/usr/lib/jvm/java-6-sun/include/linux -L/usr/lib/jvm/java-6-sun/jre/lib/i386/server/ -ljvm jnitest.cc
참고: 구현 JNI 메소드의 반환 코드를 확인하여 적절한 오류 처리를 수행하세요.
위 내용은 C 애플리케이션에서 Java 메소드를 어떻게 호출할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!