, java , Java- 32-, 64- . , ++.so/.dll .
, java ++ :
class JavaClass
{
private long native_ptr = 0;
private native long createNativeInstance( params );
private native String nativeMethod( params );
private native void destroyNativeInstance( long p_native_ptr );
public JavaClass( params )
{
this.native_ptr = createNativeInstance( params );
}
public String javaMethod( params )
{
nativeMethod( this.native_ptr, params );
}
public void finalize()
{
destroyNativeInstance( this.native_ptr );
}
}
++ . ( ++ CppClass)
JNIEXPORT jlong JNICALL Java_JavaClass_createNativeInstance
( JNIEnv* p_jenv
, jobject p_jthis
, params )
{
return (jlong) new CppClass( converted_params );
}
JNIEXPORT void JNICALL Java_JavaClass_destroyNativeInstance
( JNIEnv* p_jenv
, jobject p_jthis
, jlong p_native_ptr )
{
if( p_native_ptr )
delete (CppClass*)p_native_ptr;
}
JNIEXPORT jstring JNICALL Java_JavaClass_nativeMethod
( JNIEnv* p_jenv
, jobject p_jthis
, jlong p_native_ptr
, params
)
{
std::string cpp_result = ((CppClass*)p_native_ptr)->cppMethod( converted_params );
jstring java_result = p_jenv->NewStringUTF( cppResult.c_str() );
return java_result;
}