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.
