未定义引用'webrtc :: CreateSessionDescription(std :: __ ndk1 :: basic_string,std :: __ ndk1 :: allocator> const&,std :: __ ndk1 :: basic_string,std :: __ ndk1 :: allocator> const& amp ;,webrtc :: SdpParseError *)'
更新android ndk修订版11后,我遇到了一些问题。 由于上面的原因,我无法建立我的项目。
在Android Developer中,我发现'将libc ++的内联命名空间更改为std :: __ ndk1以防止平台libc ++出现ODR问题。',但我无法理解。
我该如何解决?
感谢您的帮助。
答案 0 :(得分:1)
我遇到了错误undefined reference to 'std::ndk 1::cout'
我通过将gradle文件更改为:
来修复它externalNativeBuild {
cmake {
cppFlags "-DANDROID_STL=c++_shared"
}
}
答案 1 :(得分: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 {
// }
}
这些代码应该有4或5个。在评论之后,你可以重建你的ndk项目,它应该可行。