中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
凤山市| 肥东县| 民乐县| 额尔古纳市| 逊克县| 阜城县| 博湖县| 招远市| 英吉沙县| 东源县| 西平县| 屯门区| 平远县| 紫阳县| 巴林右旗| 阳江市| 临漳县| 全州县| 大姚县| 霍州市| 岢岚县| 绥滨县| 厦门市| 鞍山市| 买车| 金秀| 定结县| 盐亭县| 枝江市| 克东县| 青铜峡市| 白河县| 六安市| 桦南县| 大城县| 鹤庆县| 海宁市| 页游| 婺源县| 庄浪县| 扶余县|