Подскажите плиз, где бы можно было посикать описание на ф-ии GetMethodID. Интересует 3й параметр. На каком основании и по какому соглашению они набирают этот набор кракозябров "[CI)V". Например:
GetMethodID(clazz, "Callbck", "[CI)V");
Цель — мне необходимо вызвать метод на Java callbackом из С++, сигнатуры методов разные, мне бы их ID получить бы...
Здравствуйте, loknalori, Вы писали:
L>Подскажите плиз, где бы можно было посикать описание на ф-ии GetMethodID. Интересует 3й параметр. На каком основании и по какому соглашению они набирают этот набор кракозябров "[CI)V". Например: L>
L>GetMethodID(clazz, "Callbck", "[CI)V");
L>
L>Цель — мне необходимо вызвать метод на Java callbackом из С++, сигнатуры методов разные, мне бы их ID получить бы...
Здравствуйте, loknalori, Вы писали:
L>Подскажите плиз, где бы можно было посикать описание на ф-ии GetMethodID. Интересует 3й параметр. На каком основании и по какому соглашению они набирают этот набор кракозябров "[CI)V". Например: L>
L>GetMethodID(clazz, "Callbck", "[CI)V");
L>
L>Цель — мне необходимо вызвать метод на Java callbackом из С++, сигнатуры методов разные, мне бы их ID получить бы...
The Java Language Specification читать не пробовали? Или обходитесь МК?
Здравствуйте, loknalori, Вы писали:
L>...
L>Цель — мне необходимо вызвать метод на Java callbackом из С++, сигнатуры методов разные, мне бы их ID получить бы...
На самом деле, если джава-часть уже готова, то можно просто нагенерить нужные сишные объявления через утилиту javah
Пример:
package com;
public class BBB {
native int tests();
}
Компилим, запускам javah:
javah -classpath classes com.BBB
Результат — появляется файлик com_BBB.h вида
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>
/* Header for class com_BBB */#ifndef _Included_com_BBB
#define _Included_com_BBB
#ifdef __cplusplus
extern"C" {
#endif/*
* Class: com_BBB
* Method: tests
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_com_BBB_tests
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
B>На самом деле, если джава-часть уже готова, то можно просто нагенерить нужные сишные объявления через утилиту javah
С вызовом из java Сшных методов у меня проблем нет. Так собсна хедеры и нагенерили. Вопрос был чисто на вашу ссылочку. Спасибо, это именно то что нужно.
Здравствуйте, loknalori, Вы писали:
L>С вызовом из java Сшных методов у меня проблем нет. Так собсна хедеры и нагенерили. Вопрос был чисто на вашу ссылочку. Спасибо, это именно то что нужно.
Оки.
Из личного опыта — т.к. самом писать сигнатуры лениво, то тупо делал в классе, метод которого надо вызвать, этот метод native, запускал javah и брал готовую сигнатуру.
Здравствуйте, bolshik, Вы писали: B>Из личного опыта — т.к. самом писать сигнатуры лениво, то тупо делал в классе, метод которого надо вызвать, этот метод native, запускал javah и брал готовую сигнатуру.
javah.exe -classpath JavaAapplication1.My
Error: No classes were specified on the command line. Try -help.
Здравствуйте, loknalori, Вы писали:
L>Здравствуйте, bolshik, Вы писали: B>>Из личного опыта — т.к. самом писать сигнатуры лениво, то тупо делал в классе, метод которого надо вызвать, этот метод native, запускал javah и брал готовую сигнатуру. L>
L>javah.exe -classpath JavaAapplication1.My
L>Error: No classes were specified on the command line. Try -help.
Здравствуйте, denis.zhdanov, Вы писали:
DZ>Здравствуйте, loknalori, Вы писали:
L>>И сам себе отвечу я — пути не были прописаны
DZ>И сам себе наврал
не наврал.
javah.exe -classpath "физический путь до папки где компаленые классы лежат" JavaAapplication1.My
DZ>Путь как раз прописан, а вот по какому классу генерить хидер не указано.
Здравствуйте, loknalori, Вы писали:
L>>>И сам себе отвечу я — пути не были прописаны
DZ>>И сам себе наврал L>не наврал. L>javah.exe -classpath "физический путь до папки где компаленые классы лежат" JavaAapplication1.My