История изменений
Исправление tyamur, (текущая версия) :
// java code
int nativePtr;
native int nCreate(); // return nativePtr
....
native int nGetType(int i); // в качестве параметра используется nativePtr выданный ранее nCreate();
// C++ code
int Java_com_jni_core_Object3d_nCreate()
{
Object3d *v0; // esi
SmartObject *v2; // [esp+4h] [ebp-14h]
v0 = operator new(0x28Cu);
Object3d::Object3d(v0);
return JavaPtr::hold(v0, v2);
// первые два a1 и а2 не используются(JNIENV* и jobject)
//
int __cdecl Java_com_jni_core_Object3d_nGetType(int a1, int a2, _DWORD **a3)
{
if ( !*a3 )
BUG();
return (*(***a3 + 56))(**a3);
}
Я так предполагаю что **a3 это Object3d в итоге.
Исправление tyamur, :
// java code
int nativePtr;
native int nCreate(); // return nativePtr
....
native int nGetType(int i); // в качестве параметра используется nativePtr выданный ранее nCreate();
// C++ code
int Java_com_jni_core_Object3d_nCreate()
{
Object3d *v0; // esi
SmartObject *v2; // [esp+4h] [ebp-14h]
v0 = operator new(0x28Cu);
Object3d::Object3d(v0);
return JavaPtr::hold(v0, v2);
// первые два a1 и а2 не используются(JNIENV* и jobject)
//
int __cdecl Java_com_jni_core_Object3d_nGetType(int a1, int a2, _DWORD **a3)
{
if ( !*a3 )
BUG();
return (*(***a3 + 56))(**a3);
}
Исправление tyamur, :
// java code
int nativePtr;
native int nCreate(); // return nativePtr
....
native int nGetType(int i); // в качестве параметра используется nativePtr выданный ранее nCreate();
// C++ code
int Java_com_jni_core_Object3d_nCreate()
{
Object3d *v0; // esi
SmartObject *v2; // [esp+4h] [ebp-14h]
v0 = operator new(0x28Cu);
Object3d::Object3d(v0);
return JavaPtr::hold(v0, v2);
// первые два a1 и а2 не используются(JNIENV* и jobject)
//
int __cdecl Java_com_jni_core_Object3d_nGetType(int a1, int a2, _DWORD **a3)
{
if ( !*a3 )
BUG();
return (*(***a3 + 56))(**a3);
}
Исходная версия tyamur, :
// java code
int nativePtr;
native int nCreare(); // return nativePtr
....
native int nGetType(int i); // в качестве параметра используется nativePtr выданный ранее nCreat();
// C++ code
int Java_com_jni_core_Object3d_nCreate()
{
Object3d *v0; // esi
SmartObject *v2; // [esp+4h] [ebp-14h]
v0 = operator new(0x28Cu);
Object3d::Object3d(v0);
return JavaPtr::hold(v0, v2);
// первые два a1 и а2 не используются(JNIENV* и jobject)
//
int __cdecl Java_com_jni_core_Object3d_nGetType(int a1, int a2, _DWORD **a3)
{
if ( !*a3 )
BUG();
return (*(***a3 + 56))(**a3);
}