使用 c++_shared stl 将使用 ndk r10 构建的库链接到使用 ndk r13 构建的项目
Linking library build with ndk r10 into project build with ndk r13 using c++_shared stl
我们有一个使用 android ndk r10e 构建的预构建库。我们正在进行的项目正在使用 ndk r13b 构建。当尝试 link 库时,我们的构建失败,包含 ndk stl 的库的所有函数都出现未定义的引用错误,提供 类 例如字符串。错误:
Foo.cpp:39: undefined reference to `namespaceFoo::Bar::fooBar(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&)'
我们通过仅使用 ndk 13 构建另一个库来修复此问题。不幸的是,对于其中一个必要的库,它是我们无法控制的。
我们link c++_shared lib作为stl。
有没有办法让它工作?我们能否以某种方式正确 link 使用 ndk r10 构建的库?
编辑:明确表示我们使用的是 c++_shared stl。这似乎是底层问题。
我知道我问这个问题已经很久了。
原来 google 在 c++_shared 库和 NDK 本身上做了很多工作,导致这些不兼容。我们再也不会 运行 对后来的 NDK 如此重要。
TL/DR:是的,它们不兼容。
我们有一个使用 android ndk r10e 构建的预构建库。我们正在进行的项目正在使用 ndk r13b 构建。当尝试 link 库时,我们的构建失败,包含 ndk stl 的库的所有函数都出现未定义的引用错误,提供 类 例如字符串。错误:
Foo.cpp:39: undefined reference to `namespaceFoo::Bar::fooBar(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&)'
我们通过仅使用 ndk 13 构建另一个库来修复此问题。不幸的是,对于其中一个必要的库,它是我们无法控制的。
我们link c++_shared lib作为stl。
有没有办法让它工作?我们能否以某种方式正确 link 使用 ndk r10 构建的库?
编辑:明确表示我们使用的是 c++_shared stl。这似乎是底层问题。
我知道我问这个问题已经很久了。
原来 google 在 c++_shared 库和 NDK 本身上做了很多工作,导致这些不兼容。我们再也不会 运行 对后来的 NDK 如此重要。
TL/DR:是的,它们不兼容。