У меня есть файл Ability.h
, который зависит от файла Effect.h
.
Мне нужно использовать javah для создания моего заголовка, но я не могу определить зависимость Effect в моем классе Ability.java
, из которого я хотел бы создать заголовок C++ .
Пример:
public class Ability {
static {
System.loadLibrary("com_test_Effect");
System.loadLibrary("com_test_Ability");
}
public native Effect foo(Effect x);
}
Этот код создает файл *.h без функции foo()
, как если бы он не мог ее распознать. Он создает правильный файл, если я поменяю тип возвращаемого значения на int и не включу com_test_Effect.
У меня есть оба модуля, определенные в файле Android.mk (com_test_Effect и com_test_Ability).
Как включить другой файл С++ непосредственно в класс Xyz.java
, из которого *.h
генерируется javah?
Изменить. Вопрос также можно задать следующим образом: есть ли способ передать аргументы типа С++ или вернуть значение типа С++ из функции, которая является интерфейсом между С++ и Java? (Интерфейсной средой является JNI.) Например, вы можете сделать это с базовыми типами, такими как int, которые затем преобразуются в jint и так далее.
javah
. Я бы спросил, скомпилировали ли вы классEffect
? - person user207421   schedule 13.05.2012