JNI GetMethodID specification
От: loknalori Россия  
Дата: 18.05.07 14:27
Оценка:
Подскажите плиз, где бы можно было посикать описание на ф-ии GetMethodID. Интересует 3й параметр. На каком основании и по какому соглашению они набирают этот набор кракозябров "[CI)V". Например:
GetMethodID(clazz, "Callbck", "[CI)V");


Цель — мне необходимо вызвать метод на Java callbackом из С++, сигнатуры методов разные, мне бы их ID получить бы...
Re: JNI GetMethodID specification
От: bolshik Россия http://denis-zhdanov.blogspot.com/
Дата: 18.05.07 14:33
Оценка: 1 (1)
Здравствуйте, loknalori, Вы писали:

L>Подскажите плиз, где бы можно было посикать описание на ф-ии GetMethodID. Интересует 3й параметр. На каком основании и по какому соглашению они набирают этот набор кракозябров "[CI)V". Например:

L>
L>GetMethodID(clazz, "Callbck", "[CI)V");
L>


L>Цель — мне необходимо вызвать метод на Java callbackом из С++, сигнатуры методов разные, мне бы их ID получить бы...


здесь
http://denis-zhdanov.blogspot.com
Re: JNI GetMethodID specification
От: 31415926 Россия  
Дата: 18.05.07 14:37
Оценка:
Здравствуйте, loknalori, Вы писали:

L>Подскажите плиз, где бы можно было посикать описание на ф-ии GetMethodID. Интересует 3й параметр. На каком основании и по какому соглашению они набирают этот набор кракозябров "[CI)V". Например:

L>
L>GetMethodID(clazz, "Callbck", "[CI)V");
L>


L>Цель — мне необходимо вызвать метод на Java callbackом из С++, сигнатуры методов разные, мне бы их ID получить бы...

The Java Language Specification читать не пробовали? Или обходитесь МК?
Re: JNI GetMethodID specification
От: bolshik Россия http://denis-zhdanov.blogspot.com/
Дата: 18.05.07 14:39
Оценка:
Здравствуйте, 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
http://denis-zhdanov.blogspot.com
Re[2]: JNI GetMethodID specification
От: loknalori Россия  
Дата: 18.05.07 14:41
Оценка:
B>На самом деле, если джава-часть уже готова, то можно просто нагенерить нужные сишные объявления через утилиту javah
С вызовом из java Сшных методов у меня проблем нет. Так собсна хедеры и нагенерили. Вопрос был чисто на вашу ссылочку. Спасибо, это именно то что нужно.
Re[3]: JNI GetMethodID specification
От: bolshik Россия http://denis-zhdanov.blogspot.com/
Дата: 18.05.07 14:50
Оценка:
Здравствуйте, loknalori, Вы писали:

L>С вызовом из java Сшных методов у меня проблем нет. Так собсна хедеры и нагенерили. Вопрос был чисто на вашу ссылочку. Спасибо, это именно то что нужно.


Оки.
Из личного опыта — т.к. самом писать сигнатуры лениво, то тупо делал в классе, метод которого надо вызвать, этот метод native, запускал javah и брал готовую сигнатуру.
http://denis-zhdanov.blogspot.com
Re[4]: JNI GetMethodID specification
От: loknalori Россия  
Дата: 08.08.07 11:27
Оценка:
Здравствуйте, bolshik, Вы писали:
B>Из личного опыта — т.к. самом писать сигнатуры лениво, то тупо делал в классе, метод которого надо вызвать, этот метод native, запускал javah и брал готовую сигнатуру.

javah.exe -classpath JavaAapplication1.My
Error: No classes were specified on the command line. Try -help.

Почему????
Re[5]: JNI GetMethodID specification
От: loknalori Россия  
Дата: 08.08.07 11:46
Оценка:
Здравствуйте, 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.

L>Почему????

И сам себе отвечу я — пути не были прописаны
Re[5]: JNI GetMethodID specification
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 08.08.07 11:47
Оценка:
Здравствуйте, loknalori, Вы писали:

L>

L>javah.exe -classpath JavaAapplication1.My
L>Error: No classes were specified on the command line. Try -help.

L>Почему????

Прости, а что в твоем понимании значит строка запуска

javah.exe -classpath JavaAapplication1.My

Т.е. что конкретно означает каждый из токенов там и какое действие, ты думаешь, должно произойти после выполнения этой команды?
http://denis-zhdanov.blogspot.com
Re[6]: JNI GetMethodID specification
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 08.08.07 11:48
Оценка:
Здравствуйте, loknalori, Вы писали:

L>И сам себе отвечу я — пути не были прописаны


И сам себе наврал

Путь как раз прописан, а вот по какому классу генерить хидер не указано.
http://denis-zhdanov.blogspot.com
Re[7]: JNI GetMethodID specification
От: loknalori Россия  
Дата: 08.08.07 12:20
Оценка:
Здравствуйте, denis.zhdanov, Вы писали:

DZ>Здравствуйте, loknalori, Вы писали:


L>>И сам себе отвечу я — пути не были прописаны


DZ>И сам себе наврал

не наврал.
javah.exe -classpath "физический путь до папки где компаленые классы лежат" JavaAapplication1.My

DZ>Путь как раз прописан, а вот по какому классу генерить хидер не указано.
Re[8]: JNI GetMethodID specification
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 08.08.07 12:36
Оценка:
Здравствуйте, loknalori, Вы писали:

L>>>И сам себе отвечу я — пути не были прописаны


DZ>>И сам себе наврал

L>не наврал.
L>javah.exe -classpath "физический путь до папки где компаленые классы лежат" JavaAapplication1.My

Наврал-наврал.
Ты писал
Автор: loknalori
Дата: 08.08.07
, что запускаешь через строку

javah.exe -classpath JavaAapplication1.My


Здесь JavaAapplication1.My как раз таки значение classpath, а класс, по которому надо хидер генерить, не указан.
http://denis-zhdanov.blogspot.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.