gpt4 book ai didi

java - Android NDK - 在不同的 header 中包含 C++ header ?

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:40 24 4
gpt4 key购买 nike

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

我需要使用 javah 来生成我的 header ,但是我无法在我的 Ability.java 类中定义 Effect 依赖项我希望从中生成 C++ header 。

示例:

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)。

如何将另一个 c++ 文件直接包含在 Xyz.java 类中,*.hjavah 生成?

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

最佳答案

返回一个对象怎么样:

private native Object fooNative(Object x);

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

public Effect foo(Effect x) {
return (Effect)fooNative(x);
}

关于java - Android NDK - 在不同的 header 中包含 C++ header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10571716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com