I've got the same issues. After I build on below args.gn, I got error building my projects.
error LNK2019: unresolved external symbol "class std::unique_ptr<class v8::Platform,struct std::default_delete<class v8::Platform> > __cdecl v8::platform::NewDefaultPlatform(int,enum v8::platform::IdleTaskSupport,enum v8::platform::InProcessStackDumping,class std::unique_ptr<class v8::TracingController,struct std::default_delete<class v8::TracingController> >)" (?NewDefaultPlatform@platform@v8@@YA?AV?$unique_ptr@VPlatform@v8@@U?$default_delete@VPlatform@v8@@@std@@@std@@HW4IdleTaskSupport@12@W4InProcessStackDumping@12@V?$unique_ptr@VTracingController@v8@@U?$default_delete@VTracingController@v8@@@std@@@4@@Z) referenced in function main ``` is_component_build = true is_debug = false target_cpu = "x64" use_goma = false v8_enable_backtrace = true v8_enable_disassembler = true v8_enable_object_print = true v8_enable_verify_heap = true dcheck_always_on = false ``` and if I don't wanna use clang , I even can't build v8.dll successfully. 'void std::vector<std::unique_ptr<cppgc::CustomSpaceBase,std::default_delete<cppgc::CustomSpaceBase>>,std::allocator<std::unique_ptr<cppgc::CustomSpaceBase,std::default_delete<cppgc::CustomSpaceBase>>>>::assign<std::unique_ptr<cppgc::CustomSpaceBase,std::default_delete<cppgc::CustomSpaceBase>>*,0>(_Iter,_Iter)' with [ _Iter=std::unique_ptr<cppgc::CustomSpaceBase,std::default_delete<cppgc::CustomSpaceBase>> * ] ``` is_component_build = true is_debug = false target_cpu = "x64" use_goma = false v8_enable_backtrace = true v8_enable_disassembler = true v8_enable_object_print = true v8_enable_verify_heap = true dcheck_always_on = false is_clang = false ``` There muse be a solution, because my win10-chrome is working fine, but I couldn't figure it out. jack...@gmail.com 在 2022年6月15日 星期三上午11:45:54 [UTC+8] 的信中寫道: > Im having same trouble here with VS2022 + v8 9.9 > > I copied the code from *v8\samples\hello-world.cc* > calling *v8::platform::NewDefaultPlatform()* generates unresolved > external symbol error > however for the first two lines of hello-world.cc it calls *v8.dll.lib* > works perfectly fine. > i commented out platform related code, then it can be compiled but it has > runtime exception due to platform is not correctly initialized. > the problem only happens with *v8_libplatform.dll.lib *even it is located > in same folder has same path as other libs. > > seems VS2019 works fine? problem only happens with VS2022? > > *following is the error message:* > Error LNK2001 unresolved external symbol "class > std::unique_ptr<class v8::Platform,struct std::default_delete<class > v8::Platform> > __cdecl v8::platform::NewDefaultPlatform(int,enum > v8::platform::IdleTaskSupport,enum > v8::platform::InProcessStackDumping,class std::unique_ptr<class > v8::TracingController,struct std::default_delete<class > v8::TracingController> >)" > (?NewDefaultPlatform@platform@v8@@YA?AV?$unique_ptr@VPlatform@v8@@U?$default_delete@VPlatform@v8@@@std@@@std@@HW4IdleTaskSupport@12@W4InProcessStackDumping@12@V?$unique_ptr@VTracingController@v8@@U?$default_delete@VTracingController@v8@@@std@@@4@@Z) > > v8RunJS C:\Data\Code\v8RunJS\v8RunJS\main.obj 1 > > Can someone please help? > > On Tuesday, May 25, 2021 at 2:15:24 AM UTC+8 banslah...@gmail.com wrote: > >> Seems like MSVC component Release build is broken again. Anyone looking >> at this ? >> >> Thanks, >> Himanshu >> On Wednesday, April 1, 2020 at 11:27:46 PM UTC+5:30 bil...@microsoft.com >> wrote: >> >>> Unless we add a bot for the MSVC component release build, I think I'm >>> going to give up on this. It just breaks too regularly. >>> >>> I just got a fixed merged for an issue if you're just building the >>> product binaries (see >>> https://chromium-review.googlesource.com/c/v8/v8/+/2124886 ). I then >>> went to do a full build, and there's a couple more breaks due to unresolved >>> external symbols: >>> >>> *js-call-reducer-unittest.obj* and *redundancy-elimination-unittest.obj* >>> both fail due to: >>> >>> *unresolved external symbol "__declspec(dllimport) public: static >>> class v8::internal::Handle<class v8::internal::FeedbackMetadata> __cdecl >>> v8::internal::FeedbackMetadata::New<class v8::internal::Isolate>(class >>> v8::internal::Isolate *,class v8::internal::FeedbackVectorSpec const *)"* >>> >>> This appears to be due to changes in src/objects/feedback-vector.{h,cc} >>> merged in March as part of >>> https://chromium-review.googlesource.com/c/v8/v8/+/2066965 >>> >>> *node-cache-unittest.obj* has multiple failures related to " >>> *v8::internal::compiler::NodeCache*". This appears to be due to >>> https://chromium-review.googlesource.com/c/v8/v8/+/2087405 also merged >>> in March which contains changes to src/compiler/node-cache.{h,cc} that >>> removed the explicit template instantiation declarations/definitions of >>> NodeCache<int32_t> and NodeCache<int64_t>. >>> >>> Both those change lists were written and reviewed by some of the best V8 >>> devs there are, and still broken MSVC component release builds. Trying to >>> keep this configuration working without a bot is a losing battle. >>> >>> - Bill >>> >>> >>> On Friday, January 17, 2020 at 8:50:48 AM UTC-8, Bill Ticehurst wrote: >>>> >>>> I got the fix merged. Any by the time I sync'ed to master a built, it >>>> was broken again already :-( This will likely be a pain to maintain. >>>> >>>> The additional fix ( >>>> https://chromium-review.googlesource.com/c/v8/v8/+/2005528) has now >>>> also been merged. (The V8 core team are really very good at prompt code >>>> reviews and a pleasure to work with). >>>> >>>> Please grab it and test it while it works. I'll try and build it on a >>>> regular basis to keep things humming along. >>>> >>>> To clarify: Release STATIC builds with MSVC work and usually do >>>> (Node.js relies on these, and they are part of the V8 CI tests). This >>>> change fixes Release DLL (or "component" in V8 parlance) builds. Debug DLL >>>> builds still have issues, but that's a much bigger problem I'll look into >>>> as I have time. >>>> >>>> FYI: Below are the contents of my args.gn to build Release DLLs with >>>> MSVC. Good luck! >>>> >>>> - Bill >>>> >>>> is_debug = false >>>> target_cpu = "x64" >>>> is_clang=false >>>> is_component_build=true >>>> >>>> >>>> On Monday, January 13, 2020 at 2:54:11 PM UTC-8, Ben Ernst wrote: >>>>> >>>>> Following with interest. >>>>> >>>>> Ben >>>>> >>>>> >>>>> On Sat, 11 Jan 2020 at 19:26, Bill Ticehurst <bill.t...@gmail.com> >>>>> wrote: >>>>> >>>>>> Being that this wouldn't be a "high priority" issue, the chance of >>>>>> getting it back-ported to older shipped branches is probably low. Sorry >>>>>> for >>>>>> those of you stuck on older builds. (Good news is, with v8 shipping >>>>>> every 6 >>>>>> weeks, you don't have to wait long until 'master' becomes 'legacy' :-) >>>>>> ). >>>>>> >>>>>> I actually managed to simplify the changes somewhat by just >>>>>> suppressing a harmless MSVC warning that was being treated as an error. >>>>>> I've opened a CL against the tip of master at >>>>>> https://chromium-review.googlesource.com/c/v8/v8/+/1996157 . With >>>>>> this change you should be able to build a release DLL of V8 with MSVC. >>>>>> >>>>>> There was one linker error in the tests unfortunately I couldn't fix >>>>>> (yet) without breaking other platforms, so I had to comment that test >>>>>> out >>>>>> for MSVC DLL builds. I'll take another crack at it later. Debug builds >>>>>> of >>>>>> DLLs also have further issues on MSVC I haven't tackled yet. >>>>>> >>>>>> - Bill >>>>>> >>>>>> >>>>>> On Saturday, December 21, 2019 at 3:19:42 PM UTC-8, Bill Ticehurst >>>>>> wrote: >>>>>>> >>>>>>> I spent a little more time on this and pushed another commit to my >>>>>>> fork of the 8.0 branch (see comparison with upstream 8.0 at >>>>>>> https://github.com/v8/v8/compare/8.0-lkgr...billti:v8.0-msvc-fixes?expand=1 >>>>>>> ). >>>>>>> >>>>>>> The tests now compile and pass with MSVC too now. For those >>>>>>> following along, this was how I ran the build/test. >>>>>>> >>>>>>> From the root folder, run the below to generate a x64 release build >>>>>>> using MSVC and building DLLs (assuming you're on Windows, obviously) >>>>>>> >>>>>>> * python tools\dev\v8gen.py -b x64.release msvc -- is_clang=false >>>>>>> is_component_build=true* >>>>>>> >>>>>>> Run the build, which should complete without error: >>>>>>> >>>>>>> * ninja -C out.gn/msvc <http://out.gn/msvc>* >>>>>>> >>>>>>> If you want to run the tests for good measure: >>>>>>> >>>>>>> * python tools/run-tests.py --outdir out.gn/msvc >>>>>>> <http://out.gn/msvc>* >>>>>>> >>>>>>> You should find the resulting v8.dll, along with supporting dlls and >>>>>>> .lib files, in the .\out.gn\msvc directory. >>>>>>> >>>>>>> I haven't tested much beyond running the tests and doing a few >>>>>>> ad-hoc D8 experiments, and obviously this is unsupported/untested >>>>>>> upstream >>>>>>> (where the are no bots building/testing/fuzzing this configuration). >>>>>>> >>>>>>> I'll tidy this up, open a CL, and see if this is something we can >>>>>>> get upstreamed, as several folks seem to want this option. Assuming >>>>>>> V8/Google doesn't want to run bots for this configuration but is happy >>>>>>> to >>>>>>> take fixes, is would then be beholden on us (the V8 community) to keep >>>>>>> it >>>>>>> working. (Personally, it seems to me like the only long-term >>>>>>> sustainable >>>>>>> solution for cross-compiler support is a C-based API, similar to N-API >>>>>>> for >>>>>>> Node.js, but I doubt there's much appetite for this currently). >>>>>>> >>>>>>> - Bill >>>>>>> >>>>>>> >>>>>>> On Friday, December 20, 2019 at 10:29:07 AM UTC-8, Ivan Pizhenko >>>>>>> wrote: >>>>>>>> >>>>>>>> Oh, that’s great. Thank you. I will try to apply similar patch >>>>>>>> locally to the 7.8.279.23, since I am allowed to use only “stable” >>>>>>>> versions >>>>>>>> of V8. >>>>>>>> >>>>>>>> - Ivan >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *From: *'Bill Ticehurst' via v8-users >>>>>>>> *Sent: *Friday, December 20, 2019 20:02 >>>>>>>> *To: *v8-users >>>>>>>> *Subject: *[v8-users] Re: Building v8 shared library on windows >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> FWIW: I played around with the last night for a couple hours and >>>>>>>> got a release build working using a "component build" and MSVC. It was >>>>>>>> mostly moving some inline functions and adding some V8_EXPORT_PRIVATE >>>>>>>> statements (which effectively add the "__declspec(dllexport)" >>>>>>>> statements to >>>>>>>> expose functions across DLLs with MSVC). You can see the changes over >>>>>>>> the >>>>>>>> current V8 v8.0 branch at >>>>>>>> https://github.com/v8/v8/compare/8.0-lkgr...billti:v8.0-msvc-fixes?expand=1 >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> This is very rough code, hacking away at one build break at a time >>>>>>>> until it worked. I'll need to clean it up with a consistent approach >>>>>>>> before >>>>>>>> it would be ready for a CL. It also only works for the product >>>>>>>> binaries & >>>>>>>> D8 so far (i.e. build with "ninja -C out.gn\x64.release d8"), so I >>>>>>>> need to fix up the failures when building the test code (which means >>>>>>>> figuring out some of the subtlety in >>>>>>>> https://github.com/v8/v8/blob/master/src/base/export-template.h ). >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Bottom line: It seems fixable without major changes, and should be >>>>>>>> very low risk (as the V8_EXPORT_* macros effectively compile to >>>>>>>> nothing in >>>>>>>> static builds - which is what Chromium and Node.js use for release). >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> - Bill >>>>>>>> >>>>>>>> On Wednesday, December 18, 2019 at 10:06:42 AM UTC-8, Bill >>>>>>>> Ticehurst wrote: >>>>>>>> >>>>>>>> I'm not clear on what is needed to fix this. The bug has been open >>>>>>>> quite a while (see >>>>>>>> https://bugs.chromium.org/p/v8/issues/detail?id=8791). >>>>>>>> >>>>>>>> On Tuesday, December 17, 2019 at 12:44:14 PM UTC-8, Ivan Pizhenko >>>>>>>> wrote: >>>>>>>> >>>>>>>> Hi Bill, so what needs to be fixed to get DLL build (i.e. >>>>>>>> is_component_build=true) built successfully with MSVC compiler? >>>>>>>> >>>>>>>> I've recently run into the same linking issue with DLL build >>>>>>>> compiled using clang. And to say truth, it's weird that DLL build >>>>>>>> works >>>>>>>> only with clang. >>>>>>>> >>>>>>>> p.s. I cannot use prebuilt binaries from nuget and cannot use clang >>>>>>>> to build my app. Need to use strictly MSVC 2017. >>>>>>>> >>>>>>>> - Ivan >>>>>>>> >>>>>>>> >>>>>>>> On Tuesday, December 17, 2019 at 6:36:12 PM UTC+2, Bill Ticehurst >>>>>>>> wrote: >>>>>>>> >>>>>>>> To be clear, NuGet is a Microsoft run package manager, but >>>>>>>> "Microsoft" doesn't offer any pre-built V8 binaries. A user account >>>>>>>> named >>>>>>>> "pmed" created/uploaded that package, not a Microsoft account. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> If you are building V8 in a default manner with Clang as it >>>>>>>> appears, then you can't link it with a project you're building with >>>>>>>> the >>>>>>>> MSVC compiler. Those are two different compilers and C++ doesn't have >>>>>>>> a >>>>>>>> cross compiler stable ABI (especially if using "custom_libcxx", which >>>>>>>> means >>>>>>>> they are also using a different standard C++ library - V8 the Clang >>>>>>>> provided "libc++", and MSVC will use it's own). >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> If you build V8 with Clang, you'll should build your project with >>>>>>>> Clang too (ideally using the same build toolchain - i.e. by updating >>>>>>>> the >>>>>>>> BUILD.gn file to include a target for your project - the doc at >>>>>>>> https://v8.dev/docs/embed details the Process and Shell sample >>>>>>>> apps which build via BUILD.gn and you can follow as an example). If >>>>>>>> you do >>>>>>>> decide to build V8 with MSVC, then as mentioned previously, "component >>>>>>>> build" isn't working currently, and you'll need to static link >>>>>>>> everything >>>>>>>> together ("is_component_build = false"), resulting in a large binary, >>>>>>>> rather than several V8 DLLs and a small application exe). >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> - Bill >>>>>>>> >>>>>>>> >>>>>>>> On Tuesday, December 17, 2019 at 4:31:52 AM UTC-8, Stefan >>>>>>>> Wörthmüller wrote: >>>>>>>> >>>>>>>> Note that Microsoft also offers prebuild verrions of v8 via the >>>>>>>> package manager or direct to download. >>>>>>>> >>>>>>>> I.e. https://www.nuget.org/packages/v8-v140-x64/ click on >>>>>>>> "Download" at the right and rename the archive to zip. Works well for >>>>>>>> me. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> -- >>>>>>>> v8-users mailing list >>>>>>>> v8-u...@googlegroups.com >>>>>>>> http://groups.google.com/group/v8-users >>>>>>>> --- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "v8-users" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to v8-u...@googlegroups.com. >>>>>>>> To view this discussion on the web visit >>>>>>>> https://groups.google.com/d/msgid/v8-users/a0a7c08b-7ff7-40cf-9104-021a97912018%40googlegroups.com >>>>>>>> >>>>>>>> <https://groups.google.com/d/msgid/v8-users/a0a7c08b-7ff7-40cf-9104-021a97912018%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>> . >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> -- >>>>>> -- >>>>>> v8-users mailing list >>>>>> v8-u...@googlegroups.com >>>>>> http://groups.google.com/group/v8-users >>>>>> --- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "v8-users" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to v8-u...@googlegroups.com. >>>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/d/msgid/v8-users/e738b2fd-3d7e-4684-8f45-9642b8e2c221%40googlegroups.com >>>>>> >>>>>> <https://groups.google.com/d/msgid/v8-users/e738b2fd-3d7e-4684-8f45-9642b8e2c221%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> >>>>> -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-users/bd1ec8d0-69c8-4771-b568-e6343370a25en%40googlegroups.com.