【发布时间】:2011-06-15 08:31:29
【问题描述】:
我目前正在为 C++ 类编写 JNI 包装器,但我不确定到目前为止我所做的是否是最正确的方法。
据我了解,无法声明 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,可能更容易开始。
标签: java c++ java-native-interface wrapper