Inderdaad. In Java markeer je de functie als "native" zonder implementatie, en dan kan je die in C/C++ implementeren.
Bijvoorbeeld:
Main.java
public class Main {
public static native int jnimain();
public static void main(String[] args) {
System.loadLibrary("jnimain");
System.exit(jnimain());
}
}
jnimain.cpp
#include "Main.h"
#include <iostream>
JNIEXPORT jint JNICALL Java_Main_jnimain(JNIEnv* env, jclass) {
std::cout << "Hello, world!" << std::endl;
return 0;
}
Draai javah over Main.java, compile jnimain.cpp naar een shared library libjnimain.so, compile Main.java en draai.