4

我有一个Ability.h依赖于文件的Effect.h文件。

我需要使用javah来生成我的头文件,但是我无法在我的Ability.java类中定义一个 Effect 依赖项,我希望从中生成 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)。

如何在javah生成的Xyz.java类中直接包含另一个 c++ 文件? *.h

编辑:这个问题也可以这样问:有没有办法传递 C++ 类型的参数或从作为 C++ 和 Java 之间接口的函数返回 C++ 类型的值?(接口媒介是 JNI。)例如,您可以使用 int 等基本类型,然后将其转换为 jint 等。

4

1 回答 1

-1

返回一个对象怎么样:

private native Object fooNative(Object x);

然后对其进行转换,使其具有相同的签名:

public Effect foo(Effect x) {
    return (Effect)fooNative(x);
}
于 2012-05-14T04:07:05.257 回答