Problem building v8 on Windows 10 with is_component_build = true argument

59 views
Skip to first unread message

db gn

unread,
Jun 4, 2025, 10:07:40 AMJun 4
to v8-users
Hello, I builded and embeded v8 on Windows 10 successfully when is_component_build = false and v8_monolithic = false options are set. But I want to build individual libraries for my project and trying to build with this configuration:
dcheck_always_on = false
is_component_build = true
is_debug = false
target_cpu = "x64"
use_custom_libcxx = false
v8_monolithic = false
v8_use_external_startup_data = false
treat_warnings_as_errors = false


I get this linker errors:
[1/9] LINK(DLL) third_party_abseil-cpp_absl.dll third_party_abseil-cpp_absl.dll.lib third_party_abseil-cpp_absl.dll.pdb
FAILED: third_party_abseil-cpp_absl.dll third_party_abseil-cpp_absl.dll.lib third_party_abseil-cpp_absl.dll.pdb
..\..\third_party\llvm-build\Release+Asserts\bin\lld-link.exe "/OUT:./third_party_abseil-cpp_absl.dll" /nologo -libpath:..\..\third_party\llvm-build\Release+Asserts\lib\clang\20\lib\windows "-libpath:../../../../../../../../Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/ATLMFC/lib/x64" "-libpath:../../../../../../../../Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/lib/x64" "-libpath:../../../../../../../../Program Files (x86)/Windows Kits/10/lib/10.0.22621.0/ucrt/x64" "-libpath:../../../../../../../../Program Files (x86)/Windows Kits/10/lib/10.0.22621.0/um/x64" /MACHINE:X64  "/IMPLIB:./third_party_abseil-cpp_absl.dll.lib" /DLL "/PDB:./third_party_abseil-cpp_absl.dll.pdb" "@./third_party_abseil-cpp_absl.dll.rsp"
lld-link: error: <root>: undefined symbol: public: __cdecl absl::Cord::Cord<class std::__Cr::basic_string<char, struct std::__Cr::char_traits<char>, class std::__Cr::allocator<char>>, 0>(class std::__Cr::basic_string<char, struct std::__Cr::char_traits<char>, class std::__Cr::allocator<char>> &&)
lld-link: error: <root>: undefined symbol: public: void __cdecl absl::base_internal::AtomicHook<void (__cdecl *)(enum absl::LogSeverity, char const *, int, class std::__Cr::basic_string<char, struct std::__Cr::char_traits<char>, class std::__Cr::allocator<char>> const &)>::operator()<enum absl::LogSeverity, char const *const &, int, char const (&)[34]>(enum absl::LogSeverity &&, char const *const &, int &&, char const (&)[34]) const
lld-link: error: <root>: undefined symbol: public: void __cdecl absl::base_internal::AtomicHook<void (__cdecl *)(enum absl::LogSeverity, char const *, int, class std::__Cr::basic_string<char, struct std::__Cr::char_traits<char>, class std::__Cr::allocator<char>> const &)>::operator()<enum absl::LogSeverity, char const *const &, int, char const (&)[38]>(enum absl::LogSeverity &&, char const *const &, int &&, char const (&)[38]) const
lld-link: error: <root>: undefined symbol: public: void __cdecl absl::base_internal::AtomicHook<void (__cdecl *)(enum absl::LogSeverity, char const *, int, class std::__Cr::basic_string<char, struct std::__Cr::char_traits<char>, class std::__Cr::allocator<char>> const &)>::operator()<enum absl::LogSeverity, char const *const &, int, char const (&)[39]>(enum absl::LogSeverity &&, char const *const &, int &&, char const (&)[39]) const
lld-link: error: <root>: undefined symbol: private: class std::__Cr::basic_string_view<char, struct std::__Cr::char_traits<char>> __cdecl absl::cord_internal::CordRepBtree::AddData<1>(class std::__Cr::basic_string_view<char, struct std::__Cr::char_traits<char>>, unsigned __int64)
lld-link: error: <root>: undefined symbol: private: static class absl::cord_internal::CordRepBtree * __cdecl absl::cord_internal::CordRepBtree::AddData<1>(class absl::cord_internal::CordRepBtree *, class std::__Cr::basic_string_view<char, struct std::__Cr::char_traits<char>>, unsigned __int64)
lld-link: error: <root>: undefined symbol: private: class std::__Cr::basic_string_view<char, struct std::__Cr::char_traits<char>> __cdecl absl::cord_internal::CordRepBtree::AddData<0>(class std::__Cr::basic_string_view<char, struct std::__Cr::char_traits<char>>, unsigned __int64)
lld-link: error: <root>: undefined symbol: private: static class absl::cord_internal::CordRepBtree * __cdecl absl::cord_internal::CordRepBtree::AddData<0>(class absl::cord_internal::CordRepBtree *, class std::__Cr::basic_string_view<char, struct std::__Cr::char_traits<char>>, unsigned __int64)
lld-link: error: <root>: undefined symbol: public: void __cdecl absl::Cord::Append<class std::__Cr::basic_string<char, struct std::__Cr::char_traits<char>, class std::__Cr::allocator<char>>, 0>(class std::__Cr::basic_string<char, struct std::__Cr::char_traits<char>, class std::__Cr::allocator<char>> &&)
lld-link: error: <root>: undefined symbol: void __cdecl absl::strings_internal::Base64EscapeInternal<class std::__Cr::basic_string<char, struct std::__Cr::char_traits<char>, class std::__Cr::allocator<char>>>(unsigned char const *, unsigned __int64, class std::__Cr::basic_string<char, struct std::__Cr::char_traits<char>, class std::__Cr::allocator<char>> *, bool, char const *)
lld-link: error: <root>: undefined symbol: void __cdecl absl::base_internal::CallOnceImpl<void (__cdecl &)(void)>(struct std::__Cr::atomic<unsigned int> *, enum absl::base_internal::SchedulingMode, void (__cdecl &)(void))
lld-link: error: <root>: undefined symbol: void __cdecl absl::base_internal::CallOnceImpl<void (__cdecl absl::flags_internal::FlagImpl::*)(void), class absl::flags_internal::FlagImpl *>(struct std::__Cr::atomic<unsigned int> *, enum absl::base_internal::SchedulingMode, void (__cdecl absl::flags_internal::FlagImpl::*&&)(void), class absl::flags_internal::FlagImpl *&&)
lld-link: error: <root>: undefined symbol: private: static bool __cdecl absl::Condition::CastAndCallFunction<struct std::__Cr::atomic<bool> const>(class absl::Condition const *)
lld-link: error: <root>: undefined symbol: private: void __cdecl absl::log_internal::LogMessage::CopyToEncodedBuffer<1>(class std::__Cr::basic_string_view<char, struct std::__Cr::char_traits<char>>)
lld-link: error: <root>: undefined symbol: private: void __cdecl absl::log_internal::LogMessage::CopyToEncodedBuffer<0>(class std::__Cr::basic_string_view<char, struct std::__Cr::char_traits<char>>)
lld-link: error: <root>: undefined symbol: private: static bool __cdecl absl::str_format_internal::FormatArgImpl::Dispatch<class std::__Cr::basic_string<char, struct std::__Cr::char_traits<char>, class std::__Cr::allocator<char>>>(union absl::str_format_internal::FormatArgImpl::Data, class absl::str_format_internal::FormatConversionSpecImpl, void *)
lld-link: error: <root>: undefined symbol: private: static bool __cdecl absl::str_format_internal::FormatArgImpl::Dispatch<class std::__Cr::basic_string<wchar_t, struct std::__Cr::char_traits<wchar_t>, class std::__Cr::allocator<wchar_t>>>(union absl::str_format_internal::FormatArgImpl::Data, class absl::str_format_internal::FormatConversionSpecImpl, void *)
lld-link: error: <root>: undefined symbol: private: static bool __cdecl absl::str_format_internal::FormatArgImpl::Dispatch<class std::__Cr::basic_string_view<char, struct std::__Cr::char_traits<char>>>(union absl::str_format_internal::FormatArgImpl::Data, class absl::str_format_internal::FormatConversionSpecImpl, void *)
lld-link: error: <root>: undefined symbol: private: static bool __cdecl absl::str_format_internal::FormatArgImpl::Dispatch<class std::__Cr::basic_string_view<wchar_t, struct std::__Cr::char_traits<wchar_t>>>(union absl::str_format_internal::FormatArgImpl::Data, class absl::str_format_internal::FormatConversionSpecImpl, void *)
lld-link: error: <root>: undefined symbol: private: class absl::LogSink *& __cdecl absl::inlined_vector_internal::Storage<class absl::LogSink *, 16, class std::__Cr::allocator<class absl::LogSink *>>::EmplaceBackSlow<class absl::LogSink *const &>(class absl::LogSink *const &)

I am on branch  branch-heads/13.1
I am running the build command from x64 Native Tools Command Prompt on Windows10, MSVCv143 - VS 2022 is installed, also C++ Clang tools for Windows are installed. 
Any idea how to solve this error, I tried running:
python3 third_party\abseil-cpp\generate_def_files.py which I saw suggested somewhere in threads, it finished successfully but still getting the same error.

Mikael Aboagye

unread,
Jul 13, 2025, 3:57:06 PMJul 13
to v8-users
Hey, hope your day is going well!

So since you're using a more recent version of V8, building V8 for windows, let alone as a DLL has a massive PITA for most embedders like you and me.

Anyway, to fix the abseil linker errors, what you want to do is first make sure you're compiling with clang or clang-cl. You can do this by passing the: 'is_clang=true' to your GN arguments.

If using clang isn't an option, I recommend adding the `/Zc:dllexportsInlines-` flag (See this conversation).

The main reason why this is happening, is MSVC getting confused on what symbol to use for the standard library, thus causing linker errors.

This has worked for my team, but if you're still having problems, feel free to reply, and ill see if I can help.

Logo



Mikael K Aboagye | Co-Founder/Lead Software Engineer

WD Studios

phone-icon  mikael...@wdstudios.tech   


Reply all
Reply to author
Forward
0 new messages