91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
玉田县| 哈尔滨市| 鄄城县| 罗田县| 洪江市| 南康市| 高尔夫| 北流市| 海淀区| 宾阳县| 东山县| 历史| 仙游县| 临潭县| 陆河县| 虎林市| 隆子县| 连南| 梅河口市| 宜宾县| 桃园市| 永嘉县| 休宁县| 卫辉市| 邛崃市| 郯城县| 杭州市| 右玉县| 广灵县| 枣强县| 日土县| 恩平市| 正阳县| 吴桥县| 黑水县| 宿迁市| 临西县| 汤阴县| 江城| 安庆市| 扶风县|