亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

c++調用java怎樣傳遞參數

c++
小樊
81
2024-11-23 23:07:37
欄目: 編程語言

要在C++中調用Java方法并傳遞參數,您需要使用Java Native Interface (JNI)。JNI允許C++代碼與Java代碼進行交互。以下是一個簡單的示例,展示了如何在C++中調用Java方法并傳遞參數。

首先,創建一個Java類,例如MyClass.java

public class MyClass {
    public String myMethod(String input) {
        return "Hello from Java! Input: " + input;
    }
}

接下來,使用javac編譯此Java文件,并使用javah生成JNI頭文件:

javac MyClass.java
javah -jni MyClass

現在,您可以編寫一個C++文件(例如main.cpp),并使用生成的JNI頭文件調用Java方法:

#include <iostream>
#include <jni.h>
#include "MyClass.h"

int main() {
    // 加載Java虛擬機
    JavaVM* jvm;
    JNIEnv* env;
    JavaVMOption options;
    options.optionString = "-Djava.class.path=./";
    JNI_CreateJavaVM(&jvm, (void**)&env, &options);

    // 獲取Java類
    jclass cls = env->FindClass("MyClass");
    if (cls == nullptr) {
        std::cerr << "Cannot find class MyClass" << std::endl;
        return 1;
    }

    // 獲取Java方法ID
    jmethodID mid = env->GetMethodID(cls, "myMethod", "(Ljava/lang/String;)Ljava/lang/String;");
    if (mid == nullptr) {
        std::cerr << "Cannot find method myMethod" << std::endl;
        return 1;
    }

    // 創建Java字符串參數
    jstring input = env->NewStringUTF("World");

    // 調用Java方法并獲取結果
    jobject result = env->CallObjectMethod(cls, mid, input);

    // 將Java字符串轉換為C++字符串
    const char* resultStr = env->GetStringUTFChars(result, nullptr);
    std::cout << "Result from Java method: " << resultStr << std::endl;

    // 釋放資源
    env->ReleaseStringUTFChars(result, resultStr);
    env->DeleteLocalRef(result);
    env->DeleteLocalRef(cls);
    jvm->DestroyJavaVM();

    return 0;
}

編譯并運行此C++文件:

g++ -o main main.cpp -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux -L${JAVA_HOME}/jre/lib/amd64/server -ljvm
./main

這將輸出:

Result from Java method: Hello from Java! Input: World

這個示例展示了如何在C++中調用Java方法并傳遞字符串參數。您可以根據需要修改代碼以傳遞其他類型的參數。

0
桓台县| 寻乌县| 庆安县| 海林市| 长沙市| 吉首市| 大庆市| 松江区| 淮阳县| 延庆县| 子长县| 陆川县| 民权县| 正定县| 太康县| 靖州| 罗山县| 灵石县| 攀枝花市| 虎林市| 安仁县| 澜沧| 黑龙江省| 泸溪县| 万宁市| 惠水县| 冕宁县| 华蓥市| 重庆市| 甘孜县| 临泉县| 南昌市| 固阳县| 阜新| 尼玛县| 横山县| 合水县| 丹棱县| 连江县| 明星| 柳江县|