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.

Reply via email to