阅读量:1
在C++中调用Java方法并处理返回值,可以使用Java Native Interface (JNI)
- 创建一个Java类,例如
MyClass.java:
public class MyClass {
public int add(int a, int b) {
return a + b;
}
}
- 使用
javac编译Java类,并使用javah生成JNI头文件:
javac MyClass.java
javah -jni MyClass
- 创建一个C++文件,例如
main.cpp,并实现JNI函数:
#include
#include
#include "MyClass.h"
JNIEXPORT jint JNICALL Java_MyClass_add(JNIEnv *env, jobject obj, jint a, jint b) {
jclass cls = env->GetObjectClass(obj);
jmethodID mid = env->GetMethodID(cls, "add", "(II)I");
jint result = env->CallIntMethod(obj, mid, a, b);
return result;
}
int main() {
JavaVMOption options;
JNIEnv *env;
JavaVM *jvm;
options.optionString = "-Djava.class.path=./";
JNI_CreateJavaVM(&jvm, (void**)&env, &options);
jclass cls = env->FindClass("MyClass");
jmethodID mid = env->GetMethodID(cls, "add", "(II)I");
jobject obj = env->NewObject(cls, nullptr, 5, 3);
jint result = env->CallIntMethod(obj, mid, 5, 3);
std::cout << "Result: " << result << std::endl;
env->DeleteLocalRef(obj);
env->DeleteLocalRef(cls);
jvm->DestroyJavaVM();
return 0;
}
- 编译C++代码并链接Java库:
g++ -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux main.cpp -o main -L${JAVA_HOME}/jre/lib/amd64/server -ljvm
- 运行生成的可执行文件:
./main
输出结果应为:
Result: 8
这个示例展示了如何在C++中调用Java方法并处理返回值。注意,这里的示例是针对Linux系统的,如果你使用的是Windows系统,需要相应地修改-I和-L选项。
以上就是关于“c++调用java如何处理返回值”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm