更新ndk修订版11后,错误未定义对std :: __ ndk1的引用

Hon*_*aek 7 c++ android android-ndk

未定义引用'webrtc :: CreateSessionDescription(std :: __ ndk1 :: basic_string,std :: __ ndk1 :: allocator> const&,std :: __ ndk1 :: basic_string,std :: __ ndk1 :: allocator> const&,webrtc :: SdpParseError*)"

更新android ndk修订版11后,我遇到了一些问题.由于上面的原因,我无法建立我的项目.

在Android Developer中,我发现'将libc ++的内联命名空间改为std :: __ ndk1,以防止平台libc ++的ODR问题.',但我无法理解.

我该如何解决?

谢谢你的帮助.

小智 0

我认为我的方法或多或少有些棘手,但它确实有效。我进入/ndk-root-path//sources/cxx-stl/llvm-libc++/libcxx/include,有一个名为“__config”的文件。打开它并找出所有带有“_LIBCPP_BEGIN_NAMESPACE_STD”的行,这是添加内联命名空间“__ndk1”的地方。所以我只是注释掉所有内联名称空间,例如:

   352 #define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {//inline namespace _LIBCPP_NAMESPACE {
   353 #define _LIBCPP_END_NAMESPACE_STD  } //}
   354 #define _VSTD std//::_LIBCPP_NAMESPACE

   356 namespace std {
    //  inline namespace _LIBCPP_NAMESPACE {
    //  }
    }
Run Code Online (Sandbox Code Playgroud)

这些代码应该有 4 或 5 段。评论后,您可以重建您的 ndk 项目,它应该可以工作。