jni.h содержит полную структуру для JNIEnv_, включая «таблицу переходов» JNINativeInterface_. Вы можете создать свой собственный JNINativeInterface_ (указывающий на фиктивные реализации) и создать из него JNIEnv_.
Изменить в ответ на комментарии: (Я не смотрел на другой вопрос, на который вы ссылались)
#include "jni.h"
#include <iostream>
jint JNICALL MockGetVersion(JNIEnv *)
{
return 23;
}
JNINativeInterface_ jnini = {
0, 0, 0, 0, //4 reserved pointers
MockGetVersion
};
// class Foo { public static native void bar(); }
void Java_Foo_bar(JNIEnv* jni, jclass)
{
std::cout << jni->GetVersion() << std::endl;
}
int main()
{
JNIEnv_ myjni = {&jnini};
Java_Foo_bar(&myjni, 0);
return 0;
}