要在Java中调用C++程序,您可以使用Java Native Interface (JNI)
- 创建一个C++文件(例如
example.cpp
):
#includeextern "C" { #include "example.h" } JNIEXPORT void JNICALL Java_com_example_myapp_MainActivity_printHelloFromJNI(JNIEnv *env, jobject obj) { std::cout << "Hello from C++!" << std::endl; }
- 创建一个Java头文件(例如
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
- 创建一个Java类(例如
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(); } }
- 编译Java类并运行:
javac MainActivity.java java -Djava.library.path=. MainActivity
这将输出:
Hello from C++!
请注意,这只是一个简单的示例。在实际项目中,您可能需要处理更复杂的数据类型、错误处理和线程管理。