我目前正在为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