首页 > 解决方案 > android项目中V8 7.4.288.22版本库的交叉编译失败

问题描述

我正在尝试将 v8 库集成到 android 项目中,但编译失败并出现以下构建错误。

hello-jni.cpp:42: 错误: 未定义引用 'v8::platform::NewDefaultPlatform(int, v8::platform::IdleTaskSupport, v8::platform::InProcessStackDumping, std::__ndk1::unique_ptr >)' ../../buildtools/third_party/libc++/trunk/include/memory:3586: 错误:未定义引用'std::__1::__shared_weak_count::__release_weak()'

我已经使用以下参数构建了 V8 库。

is_debug = false target_cpu = "arm" v8_target_cpu = "arm" target_os = "android" is_component_build = false v8_static_library = true v8_use_snapshot = true v8_use_external_startup_data = false icu_use_data_file = false

我已经尝试了谷歌建议的几种解决方案,如下所示,但没有解决问题。

设置 is_clang: false & use_custom_libcxx: false

在以下链接共享示例项目。 https://drive.google.com/open?id=19qlaFauxhic193l1E0bTeh1SPo90rVge

请帮助我解决构建问题。

标签: androidcross-compilingv8

解决方案


未定义对 'v8::platform::NewDefaultPlatform(int, v8::platform::IdleTaskSupport, v8::platform::InProcessStackDumping, std::__ndk1::unique_ptr >)' 的引用

确保链接到libplatform.a,这是 V8 构建输出的一部分。

未定义对“std::__1::__shared_weak_count::__release_weak()”的引用

那一个应该被解决use_custom_libcxx = false


推荐阅读