Hi,

I'm trying to embed V8 on Windows into a program built with Visual Studio 
2017, which I already done before (last time it was ok with version 7.1.9).
Now I'm upgrading to V8 version 7.7.99, but my builds fail with linker 
errors.
I build V8, according to the build instructions, as follows:

> cd %USERPROFILE%\oss
> set PATH=%USERPROFILE%\oss\depot_tools;%PATH%
> set DEPOT_TOOLS_WIN_TOOLCHAIN=0
> set GYP_MSVS_VERSION=2017
> gclient
> mkdir v8
> cd v8
> fetch v8
> cd v8
> git checkout 7.7.99
> gclient sync
> gn gen out.gn/x64.debug --args="v8_use_external_startup_data=false 
is_component_build=true use_custom_libcxx=false is_debug=true"
> ninja -C out.gn/x64.debug


The problem is that V8 is built with clang, while I'm using cl. There are 
linker errors like this:


om_v8_runproc.cpp.obj:-1: error: LNK2019: unresolved external symbol 
"__declspec(dllimport) 
public: __cdecl v8::EscapableHandleScope::~EscapableHandleScope(void)" (
__imp_??1EscapableHandleScope@v8@@QEAA@XZ) referenced in function "void 
__cdecl ctm::lang::om_v8_runproc::`anonymous namespace'::jn_runproc(class 
v8::FunctionCallbackInfo<class v8::Value> const &)" (?jn_runproc@?
A0xb330fd70@om_v8_runproc@lang@ctm@@YAXAEBV?
$FunctionCallbackInfo@VValue@v8@@@v8@@@Z)


There are many inline functions that the linker for some reason expects to 
be exported from v8.dll


As I have found, for example, cl expects default constructors and 
destructors to be exported, but clang does not export those (see 
https://stackoverflow.com/questions/53283030/clang-fails-to-generate-defaulted-move-constructor-upon-template-instantiation
).


I tried building V8 with additional GN argument is_clang=false, but in that 
case there are a lot of link errors during V8 build, so the build fails.


Finally, I tried building the old version, 7.1.9, but the build that worked 
fine before now fails (the reason is that the redistributable files in 
Windows 10 SDK are now in a different folder).


So my questions are:

   1. Is it possible to build V8 7.7.99 using Visual Studio and the cl 
   compiler?
   2. If not, is it possible to use the clang build in a program built with 
   cl? How to do that?
   3. If not, maybe the above options are available for an ealier version 
   of V8?


-- 
-- 
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/8c901830-2807-4d10-a49a-f9739f665327%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to