I've been expanding on the example given here:
http://davanum.wordpress.com/2007/12/09/android-invoke-jni-based-methods-bridging-cc-and-java/
(thanks for that example!)

and have am getting Unresolved symbols when I have a class with a
virtual function.  I am using the java code given in the above
example. Here's the C++ code I am using:

#include "com_hp_CamDemo_Native.h"

class jj {
 virtual int func() {return 0;};// this line causes a failure
//   int func() {return 0;};// this line works
};

JNIEXPORT jlong JNICALL Java_com_hp_CamDemo_Native_add (JNIEnv * env,
jclass c, jlong a, jlong b) {

   jj *j = new jj;

   return a * b * 4;
}

There are two function definitions in the class jj.  The one with the
virtual keyword (which forces the class to have a vtable) results in
the UnsatisifiedLinkError exception being thrown, while the non-
virtual function works fine.

Here are the compile and link command lines I am using
arm-none-linux-gnueabi-g++  -MD -c -fpic   -I/usr/java/jdk1.6.0_11/
include/ -I/usr/java/jdk1.6.0_11/include/linux  -o obj/jini.o jini.cpp
arm-none-linux-gnueabi-ld -T armelf_linux_eabi.xsc  --error-unresolved-
symbols -static -shared -o libNative.so obj/jini.o

Is there a command line switch I'm missing that will allow this to be
used in android?

FWIW, I'm building the .so on Fedora Core 8 with the arm-2007q3
toolset and I'm running the android emulator on windowsXP.

Thanks for any insight or suggestions on how to find a solution for
this!
jim anderson

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to