4
我有一個Ability.h
文件依賴於Effect.h
文件。Android NDK - 在不同的頭文件中包含一個C++頭文件?
我需要使用JAVAH生成我的頭,但我無法定義我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)。
如何將另一個C++文件直接包含在由javah生成類的Xyz.java
類中?
編輯:問題也可以這樣問:有沒有一種方法來傳遞C++類型的參數或從C++和Java之間的接口函數返回C++類型的值? (接口介質是JNI。)例如,您可以使用像int這樣的基本類型來完成此操作,然後將其轉換爲jint,等等。
「不包括com_test_Effect」。這部分沒有效果。你不是'包括'任何東西,你在運行時加載庫。它對Java編譯器或'javah'沒有任何不可思議的影響。我會問你有沒有編譯過「效果」類? – EJP
@EJP是的,該效果是編譯的,但只是因爲它不依賴於任何東西。我想知道如何在Xyz.java中使用C++類型,這樣javah就可以生成一個合適的* .h文件。 – ScarletAmaranth
@EJP假設我不想在那裏使用「Effect」,但使用std :: string。鑑於stl已啓用,我仍然無法包含標題。那麼,我可以在* .cpp文件中完成,而不是在C++頭文件中完成。 – ScarletAmaranth