Weird GCJ/CNI Behaviour

Ranjit Mathew rmathew@hotmail.com
Tue Feb 4 10:40:00 GMT 2003


Hi,

     I was trying out something recently and came across
this problem - it flummoxes me and I would really appreciate
insights into the cause of the problem. It happens with
both 3.2 as well as 3.3 on MinGW.

Here're the two files in question:
------------------------ Foo.java ----------------------------------
  1 import java.io.File;
  2
  3 public class Foo {
  4   public static void main( String[] args) { }
  5
  6    public native void bar( String[] s, File f);
  7 // public native void bar( File f, String[] s);
  8 }
------------------------ Foo.java ----------------------------------

------------------------ snafu.cc ----------------------------------
  1 #include "Foo.h"
  2 #include <java/io/File.h>
  3
  4    void Foo::bar( jstringArray s, java::io::File* f) { }
  5 // void Foo::bar( java::io::File* f, jstringArray s) { }
------------------------ snafu.cc ----------------------------------

I then do:
     gcj -C Foo.java
     gcjh Foo
     gcj --main=Foo Foo.java snafu.cc

If defined this way, I get undefined reference errors like this:
------------------------------------------------------------------
/e/src/tmp > gcj --main=Foo Foo.java snafu.cc
D:\TEMP/cc0Aaaaa.o(.data+0x20): In function `ZN3FooC1Ev':
e:/src/tmp/Foo.java:1: undefined reference to `Foo::bar(JArray<java::lang::String*>*, java::io::File*)'
D:\TEMP/cc0Aaaaa.o(.data+0x64):e:/src/tmp/Foo.java:1: undefined reference to 
`Foo::bar(JArray<java::lang::String*>*, java::io::File*)'
------------------------------------------------------------------

which is weird, since I obviously have it defined and piping
the output of nm on snafu.o through c++filt confirms it.

However, the weirder thing is that I get *no error* if the
commented lines in each file above replace their uncommented
peers!

Why should the order make a difference?
Does it happen on other platforms as well?

Thanks in advance for your insights.

Ranjit.

-- 
Ranjit Mathew          Email: rmathew AT hotmail DOT com

Bangalore, INDIA.      Web: http://ranjitmathew.tripod.com/



More information about the Java mailing list