我目前正在爲C++類寫一個JNI包裝器,而且我不確定到目前爲止我所做的是否是最正確的方法。用JNI編寫C++ Java包裝器
據我瞭解,這是不可能的聲明Java的構造native
,所以我最後寫一樣的東西:
package log;
public class Logger
{
private long internalPtr = 0;
private native long createNativeInstance(String application, String module, String function);
public Logger(String application, String module, String function)
{
this.internalPtr = createNativeInstance(application, module, function);
}
public native String getApplication();
static { System.loadLibrary("log_java"); }
}
基本上,我internalPtr
字段保存指針到我的底層C++實例,我使用static native
方法createNativeInstance()
在純Java構造函數中創建它。
這是正確的做事方式嗎?
我可以得到答案的另一個問題是:「我應該如何處理釋放?
我的Java技能非常有限,所以不要猶豫,甚至建議更「明顯」的解決方案。
非常感謝。
檢查JNA,可能更容易開始。 – lexicore 2011-06-16 06:17:23