我是一名Java开发人员,到目前为止,我对C++ / JNI的使用受到限制。

到目前为止,我已经做得不错,但是现在我正在冒险做“聪明”的事情,由于盲目飞行,我变得越来越受限制:

我正在使用gnuSTL_static库,因为我已经在同一个本机项目空间中移植了其他代码。但是由于库的简化特性,我发现用一只手绑在我的背上很难学习C++。

可以,如果有一个Javadoc(显然不是Javadoc;))或一些此类文档,我可以使用它们来查找该库中包含的内容,然后查找这些库中包含的内容(而当我希望登月)为什么不包括某些类型(例如“ map ”),而最好使用什么呢!

在过去几周搜索Google的过程中,我没有遇到任何集中且有用的资源,也没有从其他所有人的知识和专长中获得经验,我觉得我缺少了至关重要的基础资源!

有人可以帮我一下,指向我的文档,教程或示例,或可以帮助我解决JNI / C++ / Native Android编码危险之源的东西吗?

编辑:

有人向我解释说STL是标准模板库,并且这里有一个指向其中的链接:
http://www.sgi.com/tech/stl/stl_index.html

他们还解释了gnuSTL_static库是基于GNU机器的STL库,它是位于其中的一组头文件:
$ {ANDROID-NDK} \ sources \ cxx-STL \ gnu-libstdc++ \ include

可以说这无可估量地帮助了我,因为我不知道发生了什么。我只是不知道该去哪里看。

我仍然对STL似乎不是某人拥有的事实感到有些担心? (我在这里考虑Apache样式的主体)。有人可以纠正我吗?

如您所知。这里还是有点漂泊。

编辑2:

如果STL是用于描述所有非原始类型和函数的库...为什么从以下字符串中提取string.h:
$ {ANDROID-NDK} \ platforms \ android-9 \ arch-arm \ usr \ include

PS:我知道我在这里听起来很愚蠢,但我保证我只是不了解情况。我只是不确定从中间开始的必要性,因此我从哪里开始寻找。同样,链接到您认为我认为有用的任何东西都将很棒!

最佳答案

gnustl_static是gcc附带的GNU stdlibc++。它是official documentation is here,但作为教程可能没有用,因此最好获得一些有关C++的不错的书。

该库似乎没有被缩减。在您看来,这可能是因为规范中定义的标准C++库比Java中的库小得多。它具有对文件的标准访问权限,但没有文件操作,没有线程,没有网络等。

在android中,POSIX接口(interface)通常可用(普通C)。如果要使用C++,请尝试获取boost,该文件将各种特定于系统的接口(interface)包装在适当的便携式C++组件中。但是,除非经过Java层,否则Android平台上的许多服务将不可用。

广告编辑:标准库规范归ISO所有人所有。不幸的是,该标准不能从ISO免费下载,但是在网上搜索发现this

广告Edit2:C++标准库基于基础C标准库。 C++标准库具有无扩展名的 header ,而标准C库具有带后缀.h的 header 。两者均由(不同的)ISO标准定义。 C库与操作系统关系最为密切(取决于进行系统调用的特定方法),因此它随系统一起提供。另一方面,C++库在使用C库与系统进行通信时,与编译器的联系更为紧密,因此它随编译器一起提供。这就是为什么他们住在不同的地方。

07-24 09:44
查看更多