Comments 15
Нужная вещь, надо себе вкрутить :)
0
Ссылку на gihub хочется…
+1
Впервые вижу, чтобы кто-то посетовал на некрасивый код и все равно ВЫЛОЖИЛ ссылку.
А разве для вызова метода из C++ он не должен отмечаться ещё и ключевым словом
А разве для вызова метода из C++ он не должен отмечаться ещё и ключевым словом
native
? +1
native методы должны быть реализованы в динамической библиотеке, экспортирующей соответствующую c-функцию. Из нативного кода можно вызывать любые методы jvm.
0
native нужно отмечать методы, которые вызываются из Java и определяются в C++. Если не ошибаюсь, то
А в С++ определение будет
А код мой мне всегда не нравиться и всегда хочется переделать, правда не всегда знаю как.
package com.mypackage;
class Test {
private static native void nativeMyMethod();
public void JavaMethod() { nativeMyMethod(); }
}
А в С++ определение будет
extern "C" void Java_com_mypackage_Test_nativeMyMethod() {...}
А код мой мне всегда не нравиться и всегда хочется переделать, правда не всегда знаю как.
0
Я использовал подобную идею, но предпочитаю задавать сигнатуру функций, а не полагаться на правильную передачу аргументов.
Использование выглядит примерно так:
Использование выглядит примерно так:
static const jni::instance_method<jint(jint, jint)> add{"add", jni_env, instance};
const auto sum = add(1, 1);
assert(sum == 2);
+2
Делал для себя несколько лет назад. С тех пор ушел от нативного кодинга на андроиде и запросил развитие. Уверен, что за несколько правок можно заставить работать.
github.com/Monnoroch/CppJni
Там есть буквально все: даже возможность маппинга С++ классов на джава-классы.
github.com/Monnoroch/CppJni
Там есть буквально все: даже возможность маппинга С++ классов на джава-классы.
+4
Ещё бы какую-нибудь документацию к этому делу…
0
К сожалению, я давным давно не занимаюсь проектом, и плохо подготовил его для open-source. Однако, там есть некое описание вот тут: github.com/Monnoroch/CppJni/blob/master/JniForwards.h.
И я вижу, там наплюсовали проект мне, кому-то, видимо, понравился, так что скажу, что буду очень рад пуллреквестам и все такое. В свое время мне очень облегчило жизнь решение сделать либу, а не ковыряться самому в jni.
И я вижу, там наплюсовали проект мне, кому-то, видимо, понравился, так что скажу, что буду очень рад пуллреквестам и все такое. В свое время мне очень облегчило жизнь решение сделать либу, а не ковыряться самому в jni.
0
Dropbox в теме написания мостов между C++ и Java пошел по пути кодогенерации. Djinni получился действительно неплох.
0
Sign up to leave a comment.
Удобоваримый вызов Java методов из нативного кода