java和c++怎么相互调用_java与C++之间的相互调用
时间: 2024-03-21 22:41:29 浏览: 131
Java和C++之间的相互调用可以通过Java Native Interface(JNI)来实现。JNI是Java平台的一部分,允许Java代码调用本地C/C++代码,也允许本地C/C++代码调用Java代码。
具体来说,Java代码可以使用JNI创建本地方法,这些方法在C/C++代码中实现,并且可以被Java代码调用。C/C++代码可以使用JNI获取Java对象的引用,并调用Java对象的方法。
下面是Java调用C++的示例代码:
1. 在C++中实现一个本地方法:
```cpp
#include <jni.h>
extern "C" JNIEXPORT jstring JNICALL Java_MyClass_sayHello(JNIEnv* env, jobject obj) {
return env->NewStringUTF("Hello from C++!");
}
```
2. 在Java中声明一个本地方法:
```java
public class MyClass {
public native String sayHello();
static {
System.loadLibrary("mylib");
}
}
```
3. 编译C++代码生成动态链接库:
```bash
g++ -shared -fpic -o libmylib.so MyClass.cpp -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
```
4. 在Java中调用本地方法:
```java
MyClass obj = new MyClass();
String result = obj.sayHello();
System.out.println(result); // 输出 "Hello from C++!"
```
这就是Java调用C++的基本流程。C++调用Java的流程也类似,可以使用JNI获取Java对象的引用,并调用Java对象的方法。
阅读全文