我知道有很多关于将C ++集成到Java中的教程,但是有什么相关的方法,从Java到C ++的桥梁?
我问这个的原因是Android。
每个想为android编写应用程序的C ++开发人员都注意到,没有严肃的(成熟的)C ++ api for android(事实上,android缺乏STL的实现)。
唯一能够成功编写Android应用程序的API是Java。因此,不是从头开始编写api,是不是可以使用C ++中的Java类?
我知道这听起来只是一个不切实际的梦想,但大多数C ++开发人员并没有被迫学习新语言。
答案 0 :(得分:2)
基本上,Java到C ++与C ++到Java相同,但需要手动启动VM:
#include <jni.h>
JNIEnv* create_vm() {
JavaVM * jvm;
JNIEnv * environment;
JavaVMInitArgs args;
JavaVMOption options[1];
args.version = JNI_VERSION_1_4;
args.nOptions = 1;
options[0].optionString = "-Djava.class.path=/path/to/project's/root/";
args.options = options;
args.ignoreUnrecognized = JNI_FALSE;
JNI_CreateJavaVM(& jvm, (void **) & environment, & args);
return environment;
}
其余的是/ normal / JNI编程。
请注意,这是针对真正的 Java。 Dalvik可能采取不同的做法,或完全禁用它们。
答案 1 :(得分:1)
Java API是适用于Android的 API。 NDK从未打算取代它。您可以选择使用C ++编写应用程序的性能关键部分,但就是这样。我不知道为什么你甚至想用C ++编写活动?最好不要浪费你的时间,如果你已经知道C ++切换到Java将是一件小事。