Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法解析带有NDK r10e的std::chrono_Android_C++_Eclipse_Android Ndk_Chrono - Fatal编程技术网

Android 无法解析带有NDK r10e的std::chrono

Android 无法解析带有NDK r10e的std::chrono,android,c++,eclipse,android-ndk,chrono,Android,C++,Eclipse,Android Ndk,Chrono,不要以为我没有搜索,我的Android项目(在Eclipse上)拒绝识别std::chrono库。在我的头文件中,include是确定的: #include <chrono> 我有一个:无法解析“chrono”符号,chrono的所有功能都不可用。 因此,我使用NDK r10e,在Application.mk中添加了一些行,现在看起来如下所示: APP_PLATFORM := android-22 APP_STL := gnustl_static APP_CPPFLAGS := -

不要以为我没有搜索,我的Android项目(在Eclipse上)拒绝识别std::chrono库。在我的头文件中,include是确定的:

#include <chrono>
我有一个:无法解析“chrono”符号,chrono的所有功能都不可用。 因此,我使用NDK r10e,在Application.mk中添加了一些行,现在看起来如下所示:

APP_PLATFORM := android-22
APP_STL := gnustl_static
APP_CPPFLAGS := -std=gnu++11
NDK_TOOLCHAIN_VERSION := 4.8
在我的Android.mk中,我添加了:

LOCAL_CFLAGS += -std=gnu++11
这并没有解决我的问题。有什么想法吗?错误的Eclipse配置?
在修改mk文件之后,我已经构建并重新构建了我的项目。

这是Android NDK中GNU libstdc++的已知问题。它建立在非常有限的LIB(谷歌的仿生)之上,因此不能提供完全的C++标准库功能。特别是,
std::chrono
在构建时几乎完全禁用,但不仅仅是
std::chrono
。还有很多其他类和功能被禁用,所以谷歌的NDK完全不支持C++。

您可以切换到LLVM LBC+++( APPYSTL:= C++ +静态< /code >),但它在谷歌的Android NDK中具有实验状态,并且实际上不稳定(即,即使在完全标准的C++代码中也会导致应用程序崩溃)。这种不稳定性的原因与GNU libstdc++的原因相同,也就是说,它构建在非常有限的libc之上


我建议改用谷歌安卓NDK的-alternative fork,这主要是为了解决谷歌NDK的问题,如libc、libc++等的非标准实现。CrystaX NDK是作为谷歌NDK的替代品开发的(除了它提供完全符合标准的低级库)。在CLinux NDK中,GNU LIbSTDDC +和LLVM LBC++都更加稳定,完全符合C++标准,至少在GNU/Linux上符合它们的相同水平。特别是,
std::chrono
在那里完全实现,并且工作正常。此外,在CrystaX NDK中,您可以使用更新的编译器,如gcc-5.3和clang-3.7,更好地支持C++11和C++14。如果对您有帮助,我会很高兴。

这是Android NDK中GNU libstdc++的已知问题。它建立在非常有限的LIB(谷歌的仿生)之上,因此不能提供完全的C++标准库功能。特别是,
std::chrono
在构建时几乎完全禁用,但不仅仅是
std::chrono
。还有很多其他类和功能被禁用,所以谷歌的NDK完全不支持C++。

您可以切换到LLVM LBC+++( APPYSTL:= C++ +静态< /code >),但它在谷歌的Android NDK中具有实验状态,并且实际上不稳定(即,即使在完全标准的C++代码中也会导致应用程序崩溃)。这种不稳定性的原因与GNU libstdc++的原因相同,也就是说,它构建在非常有限的libc之上


我建议改用谷歌安卓NDK的-alternative fork,这主要是为了解决谷歌NDK的问题,如libc、libc++等的非标准实现。CrystaX NDK是作为谷歌NDK的替代品开发的(除了它提供完全符合标准的低级库)。在CLinux NDK中,GNU LIbSTDDC +和LLVM LBC++都更加稳定,完全符合C++标准,至少在GNU/Linux上符合它们的相同水平。特别是,
std::chrono
在那里完全实现,并且工作正常。此外,在CrystaX NDK中,您可以使用更新的编译器,如gcc-5.3和clang-3.7,更好地支持C++11和C++14。如果它对你有帮助,我会很高兴。

如果你用
-std=c++11
而不是
-std=gnu++11
,这有什么区别吗?我试过了,没有区别…如果你用
-std=c++11
而不是
-std=gnu++11
,有什么区别吗?我试过了,没有区别…谢谢你的回答,但它不起作用。。。时间总是未知的。我不舒服的C++和CrystaX NDK崩溃我的应用程序,它编译(当我评论计时),但不运行(文件未发现在NDK文件夹)。但是,我把它放在了未来,现在没有时间了。当你用Android NDK r10e切换到
c++\u static
时,它不起作用?或者当你切换到CrystaX NDK时它就不工作了?无论如何,在这两种情况下,我肯定你都做错了什么,因为
std::chrono
在这两种情况下都是绝对可以访问的。您的Application.mk或Android.mk可能有问题。我知道你已经推迟了,但是如果你决定返回到它,首先我建议构建一个简单的案例,看看它是否有效(实际上应该如此),然后切换到更复杂的案例。我只是尝试切换到c++静态,而我的Eclipse不支持它,我不知道为什么。。。关于CrystaX,我相信你是对的,我做错了什么,但是什么?下次,我会照你说的做:一个简单的例子。谢谢你的回答,但它不起作用。。。时间总是未知的。我不舒服的C++和CrystaX NDK崩溃我的应用程序,它编译(当我评论计时),但不运行(文件未发现在NDK文件夹)。但是,我把它放在了未来,现在没有时间了。当你用Android NDK r10e切换到
c++\u static
时,它不起作用?或者当你切换到CrystaX NDK时它就不工作了?无论如何,在这两种情况下,我肯定你都做错了什么,因为
std::chrono
在这两种情况下都是绝对可以访问的。您的Application.mk或Android.mk可能有问题。我知道你已经推迟了,但是如果你决定返回到它,首先我建议构建一个简单的案例,看看它是否有效(实际上应该如此),然后切换到更复杂的案例。我只是尝试切换到c++静态,而我的Eclipse不支持它,我不知道为什么。。。关于CrystaX,我相信你是对的,我做错了什么,但是什么?下次,我会照你说的做:一个简单的例子。谢谢
LOCAL_CFLAGS += -std=gnu++11