This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Bug in JNI RegisterNatives?


That's what I tried.

But the way JNINativeMethod is defined in jni.h, I cannot forward declare it that way. Here's the relevant part from jni.h:

typedef struct
{
	...
} JNINativeMethod;

Changing this would help, but I'm not sure we can do this, as the file is part of classpath. But this should work:

typedef struct JNINativeMethod
{
	...
} JNINativeMethod;

Class.h does not foward declare JNIEnv. _Jv_JNIEnv is used at 4 places, but not declared. I'm a bit puzzled. It must be declared in one of the includes, but where?

Jürg

Am 31.05.2006 um 14:20 schrieb Tom Tromey:

"Juerg" == Juerg Lehni <juerg@scratchdisk.com> writes:

Juerg> I just tried to do this but was running into troubles with needed
Juerg> forward declarations in Class.h for JNIEnv and JNINativeMethod, both
Juerg> needed to declare _Jv_JNI_RegisterNatives as a friend.


Juerg> The way these are defined in jni.h, it seems to not be possible to
Juerg> forward declare them in Class.h. A possible solution is to include
Juerg> jni.h there, but before I go ahead I'd like to hear your opinion on
Juerg> this.


You shouldn't need to. You can just declare them like:

    struct JNIEnv;
    struct JNINativeMethod;

in Class.h.

In fact, JNIEnv must already be handled this way, since it is already
referred to in Class.h.

Tom


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]