Java到C++;桥? 我知道有很多教程把C++集成到java中,但是反过来说,爪哇到C++的桥梁是什么?

Java到C++;桥? 我知道有很多教程把C++集成到java中,但是反过来说,爪哇到C++的桥梁是什么?,java,c++,android,Java,C++,Android,我问这个的原因是 P>每个想要编写Android应用程序的C++开发者注意到,在Android上没有严肃的(成熟的)C++ API(实际上,Android缺少STL的实现)。 唯一成熟到足以编写android应用程序的API是Java。因此,不是从头开始写API,就不能使用C++(?)/java的Java类吗? C++ C++语言,但是我知道这听起来像是一个不切实际的梦想,但是大多数C++开发者都没有被迫学习一种新的语言。本质上,Java到C++与C++ + java是一样的,除了你需要手动

我问这个的原因是

<> P>每个想要编写Android应用程序的C++开发者注意到,在Android上没有严肃的(成熟的)C++ API(实际上,Android缺少STL的实现)。 唯一成熟到足以编写android应用程序的API是Java。因此,不是从头开始写API,就不能使用C++(?)/java的Java类吗?
C++ C++语言,但是我知道这听起来像是一个不切实际的梦想,但是大多数C++开发者都没有被迫学习一种新的语言。

本质上,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;
}
#包括
JNIEnv*create_vm(){
JavaVM*jvm;
JNIEnv*环境;
JavaVMInitArgs args;
JavaVMOption选项[1];
args.version=JNI_version_1_4;
args.nOptions=1;
选项[0]。选项字符串=“-Djava.class.path=/path/to/project的/root/”;
args.options=选项;
args.ignoreunrecogned=JNI_FALSE;
JNI_CreateJavaVM(&jvm,(void**)&environment,&args);
回归环境;
}
其余的是/normal/JNI编程



请注意,这是针对真正的Java的。Dalvik可能会做不同的事情,或者完全禁用它们。

本质上,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;
}
#包括
JNIEnv*create_vm(){
JavaVM*jvm;
JNIEnv*环境;
JavaVMInitArgs args;
JavaVMOption选项[1];
args.version=JNI_version_1_4;
args.nOptions=1;
选项[0]。选项字符串=“-Djava.class.path=/path/to/project的/root/”;
args.options=选项;
args.ignoreunrecogned=JNI_FALSE;
JNI_CreateJavaVM(&jvm,(void**)&environment,&args);
回归环境;
}
其余的是/normal/JNI编程



请注意,这是针对真正的Java的。Dalvik可能会做不同的事情,或者完全禁用它们。

Java API是Android的API。NDK从未打算取代它。您可以选择在C++中编写应用程序的性能关键部分,但就是这样。我不知道为什么你甚至想写C++中的活动?所以最好不要浪费时间,如果你已经知道C++切换到java是小菜一碟。

< p> java API是<强> < < /强> API的Android。NDK从未打算取代它。您可以选择在C++中编写应用程序的性能关键部分,但就是这样。我不知道为什么你甚至想写C++中的活动?所以最好不要浪费你的时间,如果你已经知道C++切换到java是小菜一碟。< / P>我想你是说“从C++主程序调用Java例程”,而不是“从Java主程序调用C++”。学习一种新语言总是有趣的。我猜你的意思是“从一个C++主程序调用java例程”,而不是“从一个Java主程序调用C++”。?学习一门新语言总是很有趣的。我也认为dalvik做的事情有点不同。如果我在Android上完全无法从您提供的代码中获得可用的结果,我将不得不学习Java;-):)顺便说一下,我不能真正地认为C++语法+ java STDLIB不是一种“新语言”——从C++世界中学习java语法比学习它的类更容易。我也认为Dalvik的做法有点不同。如果我在Android上完全无法从您提供的代码中获得可用的结果,我将不得不学习Java;-):)顺便说一下,我不能真正地认为C++语法+ java STDLIB不是一种“新语言”——它比C++更容易学习C++世界的java语法。