要在Java中调用C++程序,您可以使用Java Native Interface (JNI)
example.cpp
):#include <iostream>
extern "C" {
#include "example.h"
}
JNIEXPORT void JNICALL Java_com_example_myapp_MainActivity_printHelloFromJNI(JNIEnv *env, jobject obj) {
std::cout << "Hello from C++!" << std::endl;
}
example.h
):#ifndef _EXAMPLE_H
#define _EXAMPLE_H
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT void JNICALL Java_com_example_myapp_MainActivity_printHelloFromJNI(JNIEnv *env, jobject obj);
#ifdef __cplusplus
}
#endif
#endif // _EXAMPLE_H
javac
编译C++文件,并使用javah
生成Java头文件:javac example.cpp -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
javah -jni Java_com_example_myapp_MainActivity_printHelloFromJNI
MainActivity.java
):package com.example.myapp;
public class MainActivity {
static {
System.loadLibrary("example");
}
public native void printHelloFromJNI();
public static void main(String[] args) {
MainActivity mainActivity = new MainActivity();
mainActivity.printHelloFromJNI();
}
}
javac MainActivity.java
java -Djava.library.path=. MainActivity
这将输出:
Hello from C++!
请注意,这只是一个简单的示例。在实际项目中,您可能需要处理更复杂的数据类型、错误处理和线程管理。