java如何调用c++
时间: 2023-04-10 21:05:07 浏览: 57
Java可以通过JNI(Java Native Interface)调用C语言的函数。首先需要在C语言中编写一个动态链接库(.dll或.so文件),然后在Java中使用System.loadLibrary()方法加载该库,最后通过Java中的native关键字声明调用C语言函数的接口。具体实现可以参考JNI的相关文档和示例代码。
相关问题
java 调用 c++
Java调用C++可以通过JNI(Java Native Interface)实现。下面是一个简单的示例:
1.编写C++代码,例如test.cpp:
```cpp
#include <iostream>
#include "Test.h" //注意这里的头文件名需要和后面的.h文件名一致
using namespace std;
JNIEXPORT void JNICALL Java_Test_sayHello(JNIEnv *env, jobject obj) {
cout << "Hello from C++!" << endl;
}
```
2.使用Javah命令生成.h文件,例如:
```
javah -jni Test
```
3.将生成的.h文件包含在C++代码中,例如:
```cpp
#include <iostream>
#include "Test.h"
using namespace std;
JNIEXPORT void JNICALL Java_Test_sayHello(JNIEnv *env, jobject obj) {
cout << "Hello from C++!" << endl;
}
```
4.编译C++代码生成动态链接库文件,例如:
```
g++ -shared -o libtest.so test.cpp
```
5.在Java代码中加载动态链接库并调用C++函数,例如:
```java
public class Main {
static {
System.loadLibrary("test");
}
private native void sayHello();
public static void main(String[] args) {
Main main = new Main();
main.sayHello();
}
}
```
运行Java代码即可看到输出:Hello from C++!
Java调用c++
Java可以通过JNI(Java Native Interface)技术调用C++编写的动态链接库。下面是一个简单的示例:
1. 编写C++代码
假设我们有一个C++函数,它将两个整数相加并返回结果:
```c++
// add.cpp
#include <iostream>
using namespace std;
extern "C" {
int add(int a, int b) {
return a + b;
}
}
```
2. 生成动态链接库
使用C++编译器将add.cpp编译成动态链接库,例如在Linux下可以执行以下命令:
```
g++ -shared -fPIC add.cpp -o libadd.so
```
这将生成一个名为libadd.so的动态链接库。
3. 在Java中调用C++
在Java中,我们可以使用JNI技术来加载动态链接库并调用其中定义的函数。下面是一个简单的示例:
```java
// Main.java
public class Main {
static {
System.loadLibrary("add");
}
public static void main(String[] args) {
int sum = add(1, 2);
System.out.println("1 + 2 = " + sum);
}
private static native int add(int a, int b);
}
```
注意这里使用了static代码块来加载名为libadd.so的动态链接库,并且定义了一个native方法add来调用C++中的add函数。
4. 编译Java程序并运行
使用Java编译器编译Main.java,并将生成的class文件和libadd.so放在同一目录下,然后运行Main类即可:
```
javac Main.java
java Main
```
输出结果为:
```
1 + 2 = 3
```
这说明Java成功调用了C++中的add函数并获得了正确的计算结果。