This bug is fixed now: 
https://bugs.chromium.org/p/v8/issues/detail?id=6158&q=&colspec=ID%20Type%20Status%20Priority%20Owner%20Summary%20HW%20OS%20Component%20Stars&start=1000

On Wednesday, 1 March 2017 18:16:49 UTC, DánielN wrote:
>
> I would like to add some more information to this topic. It could be 
> useful to someone later. The previous version of V8 I am using is about a 
> year old now and I would like to debug javascript in the embedded vm that 
> is why I need the latest version.
> I struggled a lot to make it work. I did not managed to create the 
> necessary static libs. First I linked the obj files. It was a working but 
> ugly solution. Then I found this topic that led me to the "proper" solution.
>
> I had to have the static libs with statically linked runtime.
>
> Here are the steps that worked for me:
>
> download and unzip 
> https://storage.googleapis.com/chrome-infra/depot_tools.zip to a folder 
> (e.g. d:\Dev\v8-3\depot_tools)
> prepend (not append!) depot_tools to PATH:> 
> path=d:\Dev\v8-3\depot_tools;%PATH%
> > gclient
> > set DEPOT_TOOLS_WIN_TOOLCHAIN=0
> > fetch v8
> > cd v8
> (if the next step does not work reinstall Win SDK 10 (maybe just the 
> debugging tools from it suffices))
> > gn gen --args="is_debug=false is_component_build=false 
> v8_use_snapshot=true v8_use_external_startup_data=false 
> v8_static_library=true" --ide=vs out\Default
> > call "C:\Program Files (x86)\Microsoft Visual Studio 
> 14.0\VC\vcvarsall.bat" amd64
> > msbuild out\Default\all.sln /nologo /t:Build 
> /p:Configuration=GN,Platform=x64 /v:normal
>
> Three things to highlight
> 1. The "shard" feature seems to have disappeared. The v8_base.lib is 0.4G 
> in release.
> 2. v8_libsampler.lib, DbgHelp.lib and Shlwapi.lib should probably be 
> linked to the project to avoid unresolved external references
> 3. I had to change BUILD.gn to sort out several project failures caused by 
> the referenced but not created wasm_test_signatures.lib:
> v8_source_set("wasm_test_signatures") {
>   sources = [
>     "test/common/wasm/test-signatures.cc", #this is new
>     "test/common/wasm/test-signatures.h",
>   ]
>   configs = [
>     ":external_config",
>     ":internal_config_base",
>   ]
> }
>
> I also added a new file "test/common/wasm/test-signatures.cc". This file 
> is only one line, it includes test/common/wasm/test-signatures.h.
> After these changes gn gen generated the correct project file 
> (wasm_test_signatures.vcxproj) that created the missing 
> wasm_test_signatures.lib. (Interestingly "msbuild 
> out\Default2\obj\wasm_test_signatures.vcxproj  /nologo /t:Build 
> /p:Configuration=GN,Platform=x64 /v:normal" did not fail but it did not 
> create the lib, either)
>
> And finally this is how I link V8 to my project on Windows:
> #if defined(_WIN32)
> #    //define V8_SHARD
> #    define V8_SNAPSHOT
> #    //define V8_EXTERNAL_SNAPSHOT
> #    if defined(V8_SHARD)
> #        pragma comment(lib, "v8_base_0.lib")
> #        pragma comment(lib, "v8_base_1.lib")
> #        pragma comment(lib, "v8_base_2.lib")
> #        pragma comment(lib, "v8_base_3.lib")
> #    else
> #        pragma comment(lib, "v8_base.lib")
> #    endif    //V8_SHARD
> #    pragma comment(lib, "v8_libbase.lib")
> #    pragma comment(lib, "v8_libplatform.lib")
> #    pragma comment(lib, "v8_libsampler.lib")
> #    pragma comment(lib, "icui18n.lib")
> #    pragma comment(lib, "icuuc.lib")
> #    pragma comment(lib, "winmm.lib")
> #    pragma comment(lib, "DbgHelp.lib")
> #    pragma comment(lib, "Shlwapi.lib")
> #    if defined(V8_SNAPSHOT)
> #        if defined(V8_EXTERNAL_SNAPSHOT)
> #            pragma comment(lib, "v8_external_snapshot.lib")
> #        else
> #            pragma comment(lib, "v8_snapshot.lib")
> #        endif
> #    else
> #             pragma comment(lib, "v8_nosnapshot.lib")
> #    endif    //V8_SNAPSHOT
> #endif    //_WIN32
>
>
> This is a the version I built: bfa425cc0841f17294e933e8d3611aad42deb2ee 
> (Tue Feb 28 07:31:08 2017 -0800)
>
> The problem with wasm_test_signatures.lib seems to be a bug. Could someone 
> please confirm and fix it?
>
> Is there a document that describes how to link V8 to projects? It can be 
> quite a daunting job to upgrade it from an older version.
>
> On Friday, 18 November 2016 17:22:55 UTC, Ivan P. wrote:
>>
>> Found solution. So just if someone needs- 
>> 1. update v8/gni/v8.gni, put static library 
>> template("v8_source_set") {
>>   static_library(target_name) {
>> 2. generate build files with gn
>> 3. Run ninja -j1 -C yourbuilddir d8
>> Build only d8 - this will build all necessary libs.  
>> Then pick yourbuilddir/obj/*.lib and following
>> yourbuilddir/icuuc.dll
>> yourbuilddir/icuuc.dll.lib
>> yourbuilddir/icuuc.dll.pdb
>> yourbuilddir/icui18n.dll
>> yourbuilddir/icui18n.dll.lib
>> yourbuilddir/icui18n.dll.pdb
>> yourbuilddir/icudtl.dat
>> Link with all libs from picked, except you need to select between 
>> v8_nosnaphshot.lib or v8_external_snapshot.lib depending on what you need.
>> Hoping that this will be helpful for someone else.
>>
>> 2016-11-18 2:24 GMT+02:00 Ivan Pizhenko <[email protected]>:
>>
>>> Found workaround, but still have problem!
>>> Workaround: building as ninja -j1 -C out.gn/optdebug.x64 d8
>>> This seems to build everything necessary.
>>> Then added following libs to linker options:
>>> icui18n.lib
>>> icuuc.lib
>>> v8_base.lib
>>> v8_external_snapshot.lib
>>> v8_libbase.lib
>>> v8_libplatform.lib
>>> v8_libsampler.lib
>>>
>>> So building now as static lib, but still have issue:
>>>
>>> Many errors like this (pasting here one instance of each):
>>>
>>> 1>v8_base.lib(api.obj) : error LNK2038: mismatch detected for 
>>> 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 
>>> 'MDd_DynamicDebug' in application.obj
>>>
>>> 1>v8_base.lib(preparser.obj) : error LNK2001: unresolved external symbol 
>>> "void (__cdecl* std::_Raise_handler)(class stdext::exception const &)" 
>>> (?_Raise_handler@std@@3P6AXAEBVexception@stdext@@@ZEA)
>>>
>>> 1>icuuc.lib(messagepattern.obj) : error LNK2005: "public: __cdecl 
>>> std::_Container_base12::_Container_base12(void)" 
>>> (??0_Container_base12@std@@QEAA@XZ) already defined in 
>>> msvcprtd.lib(MSVCP120D.dll)
>>>
>>> 1>v8_base.lib(type-hint-analyzer.obj) : error LNK2001: unresolved 
>>> external symbol "__int64 const std::_BADOFF" (?_BADOFF@std@@3_JB)
>>>
>>> 1>v8_base.lib(bytecode-peephole-optimizer.obj) : error LNK2001: 
>>> unresolved external symbol "private: static int std::locale::id::_Id_cnt" 
>>> (?_Id_cnt@id@locale@std@@0HA)
>>>
>>> 1>v8_base.lib(bytecode-array-builder.obj) : error LNK2001: unresolved 
>>> external symbol "public: static class std::locale::id std::ctype<char>::id" 
>>> (?id@?$ctype@D@std@@2V0locale@2@A)
>>>
>>> 1>v8_base.lib(simplified-lowering.obj) : error LNK2001: unresolved 
>>> external symbol _Nan
>>>
>>> My app in the configuration I am building (sort of "Debug") is linking 
>>> to dynamic debug CRT, and I am generally expect that V8 built statically 
>>> will be linking to that too, but seems like this is not the case.
>>> Please advise, what to change  else in the GN configs to get it working? 
>>>
>>> 2016-11-16 18:47 GMT+02:00 Ivan Pizhenko <[email protected]>:
>>>
>>>> Content of RSP file
>>>>
>>>> obj/build/win/default_exe_manifest/default_exe_manifest.manifest.res
>>>> obj/json_fuzzer.lib
>>>> obj/simple_fuzzer.lib
>>>> obj/fuzzer_support.lib
>>>> obj/v8_libplatform.lib
>>>> obj/v8_libbase.lib
>>>> obj/v8_external_snapshot.lib
>>>> obj/v8_base.lib
>>>> obj/v8_libsampler.lib
>>>> obj/third_party/icu/icui18n.lib
>>>> obj/third_party/icu/icuuc.lib advapi32.lib comdlg32.lib dbghelp.lib 
>>>> delayimp.lib dnsapi.lib gdi32.lib kernel32.lib msimg32.lib odbc32.lib 
>>>> odbccp32.lib ole32.lib oleaut32.lib psapi.lib shell32.lib shlwapi.lib 
>>>> user32.lib usp10.lib uuid.lib version.lib wininet.lib winmm.lib 
>>>> winspool.lib ws2_32.lib  /DEBUG /MACHINE:X64 /FIXED:NO /ignore:4199 
>>>> /ignore:4221 /NXCOMPAT /maxilksize:0x7ff00000 /fastfail /DYNAMICBASE:NO 
>>>> /INCREMENTAL /SUBSYSTEM:CONSOLE,5.02 /STACK:2097152 /LIBPATH:"C:/Program 
>>>> Files (x86)/Windows Kits/10/Lib/winv6.3/um/x64" /LIBPATH:"C:/Program Files 
>>>> (x86)/Microsoft Visual Studio 12.0/VC/lib/amd64" /LIBPATH:"C:/Program 
>>>> Files 
>>>> (x86)/Microsoft Visual Studio 12.0/VC/atlmfc/lib/amd64"
>>>>
>>>> 2016-11-16 18:45 GMT+02:00 Ivan Pizhenko <[email protected]>:
>>>>
>>>>> Edited gni/v8.gni as you recommended and trying to build with 
>>>>> following args.gn:
>>>>>
>>>>> is_component_build = false
>>>>> is_debug = true
>>>>> v8_optimized_debug=false
>>>>> target_cpu="x64"
>>>>> v8_target_cpu="x64"
>>>>>
>>>>> and getting following error:
>>>>>
>>>>> ninja -j1 -C out.gn/x64.debug
>>>>> ninja: Entering directory `out.gn/x64.debug'
>>>>> [1/287] LINK v8_simple_json_fuzzer.exe
>>>>> FAILED: v8_simple_json_fuzzer.exe
>>>>> L:/depot_tools/python276_bin/python.exe gyp-win-tool link-wrapper 
>>>>> environment.x64 False link.exe /nologo /OUT:v8_simple_
>>>>> json_fuzzer.exe /PDB:v8_simple_json_fuzzer.exe.pdb 
>>>>> @v8_simple_json_fuzzer.exe.rsp
>>>>> LINK : warning LNK4044: unrecognized option '/fastfail'; ignored
>>>>> LINK : error LNK2001: unresolved external symbol mainCRTStartup
>>>>> v8_simple_json_fuzzer.exe : fatal error LNK1120: 1 unresolved externals
>>>>>
>>>>> what I am doing wrong? please advice.
>>>>>
>>>>> 2016-11-16 0:01 GMT+02:00 Ivan Pizhenko <[email protected]>:
>>>>>
>>>>>> Thaks, I will try this workaround, but also please tell me, what 
>>>>>> exactly do you mean by current development branch? Which version of V8 
>>>>>> does 
>>>>>> it corresponds? 5.5?  5.6?
>>>>>>
>>>>>> 2016-11-10 20:33 GMT+02:00 Jochen Eisinger <[email protected]>:
>>>>>>
>>>>>>> on 5.3, it's not yet possible to build the libplatform as a shared 
>>>>>>> library (dll), sorry. This is fixed in the current development branch.
>>>>>>>
>>>>>>> also, by default we don't actually create static libraries, but gn 
>>>>>>> just keeps track of the object files you need. You can change that by 
>>>>>>> manually replacing source_set with static_library in the v8_source_set 
>>>>>>> template in gni/v8.gni
>>>>>>>
>>>>>>> hth
>>>>>>> -jochen
>>>>>>>
>>>>>>> On Thu, Nov 10, 2016 at 3:37 PM Ivan Pizhenko <[email protected]> 
>>>>>>> wrote:
>>>>>>>
>>>>>>>> So I would like to hear comments on this from some V8 developer or 
>>>>>>>> whoever solved the issue w/o Nuget package.
>>>>>>>>
>>>>>>>> 2016-11-10 16:05 GMT+02:00 Ivan Pizhenko <[email protected]>:
>>>>>>>>
>>>>>>>>> Thank you for advise, George, but what you suggest is not an 
>>>>>>>>> option in the my case, I need to have built from sources exactly this 
>>>>>>>>> stable version 5.3.332.45. There is no Nuget package fir exactly this 
>>>>>>>>> version, and there are also other circumstances those prevent me 
>>>>>>>>> using 
>>>>>>>>>  Nuget package. So I am looking for exactly an explanation on how to 
>>>>>>>>> solve 
>>>>>>>>> this manually.
>>>>>>>>>
>>>>>>>>> 2016-11-09 19:36 GMT+02:00 George Marques <[email protected]>:
>>>>>>>>>
>>>>>>>>>> I also had troubles with the build system. I found it's much 
>>>>>>>>>> easier to just use this Nuget package: 
>>>>>>>>>> https://github.com/pmed/v8-nuget.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wednesday, November 9, 2016 at 5:42:19 AM UTC-2, Ivan P. wrote:
>>>>>>>>>>>
>>>>>>>>>>> Hello, I am porting my app from V8 3.19 to V8 5.3.332.45.
>>>>>>>>>>> I have built new V8 version as DLL using Visual Studio 2013, 
>>>>>>>>>>> updated code of my app to use updated APIs  and now trying to 
>>>>>>>>>>> perform full 
>>>>>>>>>>> build of my app.
>>>>>>>>>>> My app doesn't use GN to build it, it is normal Visual Studio 
>>>>>>>>>>> 2013 project. I have specified v8.dll.lib as additional linker 
>>>>>>>>>>> input.
>>>>>>>>>>>
>>>>>>>>>>> I get following linker error:
>>>>>>>>>>> 1>v8init.obj : error LNK2019: unresolved external symbol "class 
>>>>>>>>>>> v8::Platform * __cdecl v8::platform::CreateDefaultPlatform(int)" 
>>>>>>>>>>> (?CreateDefaultPlatform@platform@v8@@YAPEAVPlatform@2@H@Z) 
>>>>>>>>>>> referenced in 
>>>>>>>>>>> function .... "
>>>>>>>>>>>
>>>>>>>>>>> I suppose v8::platform::CreateDefaultPlatform() must be present 
>>>>>>>>>>> in libplatform, but because the error happens, I can make 
>>>>>>>>>>> conclusion that 
>>>>>>>>>>> libplatform it is not included into v8.dll.lib.
>>>>>>>>>>> I have examined V8 build outputs and couldn't find libplatform 
>>>>>>>>>>> as separate static lib or DLL: here is list of libs generated 
>>>>>>>>>>> during the 
>>>>>>>>>>> build, here is what I have:
>>>>>>>>>>>
>>>>>>>>>>> icui18n.dll
>>>>>>>>>>> icuuc.dll
>>>>>>>>>>> msvcp120.dll
>>>>>>>>>>> msvcp120d.dll
>>>>>>>>>>> msvcr120.dll
>>>>>>>>>>> msvcr120d.dll
>>>>>>>>>>> pgort120.dll
>>>>>>>>>>> v8.dll
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> cctest.lib
>>>>>>>>>>> generate-bytecode-expectations.lib
>>>>>>>>>>> icui18n.dll.lib
>>>>>>>>>>> icuuc.dll.lib
>>>>>>>>>>> mksnapshot.lib
>>>>>>>>>>> unittests.lib
>>>>>>>>>>> v8.dll.lib
>>>>>>>>>>> v8_parser_shell.lib
>>>>>>>>>>> v8_simple_json_fuzzer.lib
>>>>>>>>>>> v8_simple_parser_fuzzer.lib
>>>>>>>>>>> v8_simple_regexp_fuzzer.lib
>>>>>>>>>>> v8_simple_wasm_asmjs_fuzzer.lib
>>>>>>>>>>> v8_simple_wasm_fuzzer.lib
>>>>>>>>>>>
>>>>>>>>>>> Please advise - either how to tune build to have libplatform 
>>>>>>>>>>> generated as separate DLL or included to v8.dll ?
>>>>>>>>>>> Or is it safe to make manually libplatform from obj files and 
>>>>>>>>>>> link it, taking into account v8 is DLL?
>>>>>>>>>>>
>>>>>>>>>>> Thanks.
>>>>>>>>>>>
>>>>>>>>>>> -- 
>>>>>>>>>> -- 
>>>>>>>>>> v8-users mailing list
>>>>>>>>>> [email protected]
>>>>>>>>>> http://groups.google.com/group/v8-users
>>>>>>>>>> --- 
>>>>>>>>>> You received this message because you are subscribed to a topic 
>>>>>>>>>> in the Google Groups "v8-users" group.
>>>>>>>>>> To unsubscribe from this topic, visit 
>>>>>>>>>> https://groups.google.com/d/topic/v8-users/Y05xPj956Ys/unsubscribe
>>>>>>>>>> .
>>>>>>>>>> To unsubscribe from this group and all its topics, send an email 
>>>>>>>>>> to [email protected].
>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> -- 
>>>>>>>> -- 
>>>>>>>> v8-users mailing list
>>>>>>>> [email protected]
>>>>>>>> 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 [email protected].
>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>
>>>>>>> -- 
>>>>>>> -- 
>>>>>>> v8-users mailing list
>>>>>>> [email protected]
>>>>>>> http://groups.google.com/group/v8-users
>>>>>>> --- 
>>>>>>> You received this message because you are subscribed to a topic in 
>>>>>>> the Google Groups "v8-users" group.
>>>>>>> To unsubscribe from this topic, visit 
>>>>>>> https://groups.google.com/d/topic/v8-users/Y05xPj956Ys/unsubscribe.
>>>>>>> To unsubscribe from this group and all its topics, send an email to 
>>>>>>> [email protected].
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>

-- 
-- 
v8-users mailing list
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to