Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

JNI-работа с API

9.2K
19 сентября 2006 года
AlexS
4 / / 03.01.2005
Такая вот трабла, друзья:
Хочется попользовать апи одного продукта с пом. JNI. Нашел в мсдн простейший пример пользования JNI:

greet.cpp
---------
#include "TestJNI.h"
#include <stdio.h>

JNIEXPORT void JNICALL Java_TestJNI_greetings(JNIEnv *env,jobject jobj) {
printf("Hello from Visual C++!");
}

TestJNI.java
-----------
public class TestJNI {
public native void greetings();

static {
System.loadLibrary("greet");
}

public static void main(String args[]) {
new TestJNI().greetings();
}
}

Так вот, в срр я хочу задать методы, которые использует апи моего приложения, т.е. вместо

printf("Hello from Visual C++!");

у меня будут вызываться ряд методов - открывающие приложение через апи, выпольняющие какие-то с ним действия, закрывающие его. Как это прописать я знаю. А как сделать, чтобы с пом. JNI это все корректно вызвалось. Видимо как-то надо изменить аргументы void main в java и
JNICALL Java_TestJNI_greetings в срр, но как? АПИ методы работают с объектами...
Может кто сталкивался с подобным, помогите, пожалуйста.
Спасиб!
17K
21 сентября 2006 года
Victa
16 / / 07.06.2006
Вообще то вопрос непонятен...
Вы не можете изменить список аргументов метода main - jvm просто не сможет найти точку запуска для Вашего приложения. Сигнатуры методов для JNI тоже подчиняются определенным правилам. Вам необходимо написать код на С который будет работать с интересующим Вас АPI. А java загрузит Вашу библиотеку и вызовет функцию Java_TestJNI_greetings когда Вы вызываете метод greetings()
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог