vector von cpp zu java

  • Antworten:0
private
  • Forum-Beiträge: 1

17.04.2012, 11:21:19 via Website

Hallo,
ich habe eine Methode in test.cpp
1vector<long> get_Vector();
2..
3return vec;
in java
1public native Vector<Long> getVectorProxy();
1TestActivity ta= new TestActivity();
2 Vector<Long> vec = new Vector<Long>();
3 long item =(long)ta.getVectorProxy().lastElement();
4 vec.add(item);
in jni c++
1JNIEXPORT jobject JNICALL Java_P_TestActivity_getVectorProxy
2 (JNIEnv *Penv, jobject jobj){
3 jclass classP = (Penv)->FindClass("java/util/Vector");
4 jobject ret = (Penv)->NewObject(classP, (Penv)->GetMethodID(classP, "<init>", "()V"));
5
6 jmethodID add= (Penv)->GetMethodID(classP, "addElement","(JLjava/lang/Object;)V");
7 (Penv)->CallObjectMethod(ret, add, get_Vector().at(0));
8
9 return ret;
ich möchte den Vector vom test.cpp über jni zu java passen.
- geht das? ein anderer Ansatz?
- der findet die "addElement" nicht :"method not found :Ljava/util/Vector;. addElement:.."
ich habe auch mit "Ljava/util/Vector;" hat auch nicht geklappt.

da ich long datentyp habe deshalb "J" und addElement hat void rückgabewert deshalb "V"
- warum gibt die "add" unter java.util.Vector nicht, dort war nur addElement zu sehen??

auch mit dem return vector zu jobject sind diese beide vom typ her verträglich?
bitte um Eure Hilfe.
ps.: test.cpp ist nicht im eclipseProjekt aber die wird includiert und das ist kein problem.

alex

Antworten