私はファイルがEffect.h
ファイルに依存しています。Android NDK - 別のヘッダーにC++ヘッダーを含める?
は、私は私のヘッダを生成するjavahがを使用する必要があるが、私はC++ヘッダが生成されることがしたい、そこから私のAbility.java
クラスのエフェクト依存を定義することができませんでしです。
例:それはそれを認識できなかったかのように
public class Ability {
static {
System.loadLibrary("com_test_Effect");
System.loadLibrary("com_test_Ability");
}
public native Effect foo(Effect x);
}
このコードは、foo()
機能なし* .hファイルを生成します。戻り型をintにスワップし、com_test_Effectを含めないと、適切なファイルが生成されます。
私はAndroid.mkファイル(com_test_Effectとcom_test_Ability)で定義されたモジュールの両方を持っています。
が生成されるXyz.java
クラスに直接別のC++ファイルを含める方法javah?
編集:質問には、次のように質問することもできます:C++型引数を渡す方法、またはC++とJavaの間のインターフェイスである関数からC++型の値を返す方法はありますか? (インターフェースメディアはJNIです。)例えば、intのような基本的な型を使って、それをjintに変換するなどします。
を "com_test_Effectが含まれていません"。その部分は効果がありません。あなたはここに何も「含まれていません」、実行時にライブラリをロードしています。それはJavaコンパイラや 'javah'に魔法の影響を与えません。 'Effect'クラスをコンパイルしてもらえますか? – EJP
@EJPはい、エフェクトはコンパイルされますが、それは何にも依存しないからです。私は、javahが適切な* .hファイルを生成できるように、Xyz.javaでC++型を使用する方法を知りました。 – ScarletAmaranth
@EJP私はそこに "効果"を使用したくないと仮定しますが、std :: stringです。 stlが有効になっていることを考えると、私はまだヘッダーを含めることはできません。さて、私は* .cppファイルではできますが、C++ヘッダーではできません。 – ScarletAmaranth