Creating and V8 binding in Visual Studio

It is very difficult to try to figure out how to create a Google V8 in Windows.

So far, I:

  • installed depot_tools
  • Joined v8: fetch v8
  • Create a project file: gn gen --ide=vs2015 out/Default
  • Built the entire solution in VS2015

My problem is that this leads to the creation of a large number of files .obj files and .lib .

I installed projects (v8, v8_base, v8_libbase, etc.) in Configuration type: Static library (.lib) : Screenshot of the project configuration

I'm not sure how to get Visual Studio to generate a library of files. Any help appreciated!

Update

I managed to create library files by performing the following steps:

  • Open a command prompt VS Developer.
  • Navigate to the directory containing the files for obj v8_base , v8_libbase , v8_external_snapshot and v8_libplatform .
  • For each of them to create a .lib manually using the command lib , for example. lib /o:v8_base *.obj
  • Copy all the files in the lib directory with icui18n.lib and icuuc.lib (they were created perfectly at build time.)

Now I'm trying to use the library and have a new problem that would really like to help me. I tied the following libraries in the VS: v8_base.lib; v8_libbase.lib; v8_external_snapshot.lib; v8_libplatform.lib; icui18n.lib; icuuc.lib; winmm.lib; v8_base.lib; v8_libbase.lib; v8_external_snapshot.lib; v8_libplatform.lib; icui18n.lib; icuuc.lib; winmm.lib; But I have a problem with a number of unresolved symbols:

 unresolved external symbol "public: static void __cdecl v8::sampler::Sampler::TearDown(void)" ( ?TearDown@Sampler @ sampler@v8 @@SAXXZ) referenced in function "public: static void __cdecl v8::internal::V8::TearDown(void)" ( ?TearDown@V8 @ internal@v8 @@SAXXZ) TriviaBot v8_base.lib(v8.obj) unresolved external symbol "public: void __cdecl v8::sampler::Sampler::Stop(void)" ( ?Stop@Sampler @ sampler@v8 @@QEAAXXZ) referenced in function "private: void __cdecl v8::internal::Isolate::Deinit(void)" ( ?Deinit@Isolate @ internal@v8 @@AEAAXXZ) v8_base.lib(isolate.obj) unresolved external symbol "public: void __cdecl v8::sampler::Sampler::Stop(void)" ( ?Stop@Sampler @ sampler@v8 @@QEAAXXZ) v8_base.lib(log.obj) unresolved external symbol "public: __cdecl v8::sampler::Sampler::Sampler(class v8::Isolate *)" ( ??0Sampler@sampler @ v8@ @ QEAA@PEAVIsolate @ 2@ @Z) referenced in function "public: __cdecl v8::internal::Ticker::Ticker(class v8::internal::Isolate *,int)" ( ??0Ticker@internal @ v8@ @ QEAA@PEAVIsolate @ 12@H @Z) v8_base.lib(log.obj) unresolved external symbol "public: __cdecl v8::sampler::Sampler::Sampler(class v8::Isolate *)" ( ??0Sampler@sampler @ v8@ @ QEAA@PEAVIsolate @ 2@ @Z) v8_base.lib(cpu-profiler.obj) unresolved external symbol "public: virtual __cdecl v8::sampler::Sampler::~Sampler(void)" ( ??1Sampler@sampler @ v8@ @ UEAA@XZ ) referenced in function "public: virtual void * __cdecl v8::internal::Ticker::`scalar deleting destructor'(unsigned int)" ( ??_GTicker@internal @ v8@ @ UEAAPEAXI@Z ) unresolved external symbol "public: virtual __cdecl v8::sampler::Sampler::~Sampler(void)" ( ??1Sampler@sampler @ v8@ @ UEAA@XZ ) v8_base.lib(cpu-profiler.obj) unresolved external symbol "public: void __cdecl v8::sampler::Sampler::Start(void)" ( ?Start@Sampler @ sampler@v8 @@QEAAXXZ) referenced in function "public: void __cdecl v8::internal::Profiler::Engage(void)" ( ?Engage@Profiler @ internal@v8 @@QEAAXXZ) v8_base.lib(log.obj) unresolved external symbol "public: void __cdecl v8::sampler::Sampler::IncreaseProfilingDepth(void)" ( ?IncreaseProfilingDepth@Sampler @ sampler@v8 @@QEAAXXZ) referenced in function "public: void __cdecl v8::internal::Profiler::Engage(void)" ( ?Engage@Profiler @ internal@v8 @@QEAAXXZ) v8_base.lib(log.obj) unresolved external symbol "public: void __cdecl v8::sampler::Sampler::IncreaseProfilingDepth(void)" ( ?IncreaseProfilingDepth@Sampler @ sampler@v8 @@QEAAXXZ) v8_base.lib(cpu-profiler.obj) unresolved external symbol "public: void __cdecl v8::sampler::Sampler::DecreaseProfilingDepth(void)" ( ?DecreaseProfilingDepth@Sampler @ sampler@v8 @@QEAAXXZ) referenced in function "public: void __cdecl v8::internal::Profiler::Disengage(void)" ( ?Disengage@Profiler @ internal@v8 @@QEAAXXZ) v8_base.lib(log.obj) unresolved external symbol "public: void __cdecl v8::sampler::Sampler::DecreaseProfilingDepth(void)" ( ?DecreaseProfilingDepth@Sampler @ sampler@v8 @@QEAAXXZ) v8_base.lib(cpu-profiler.obj) unresolved external symbol "public: void __cdecl v8::sampler::Sampler::DoSample(void)" ( ?DoSample@Sampler @ sampler@v8 @@QEAAXXZ) referenced in function "public: virtual void __cdecl v8::internal::SamplingThread::Run(void)" ( ?Run@SamplingThread @ internal@v8 @@UEAAXXZ) v8_base.lib(log.obj) unresolved external symbol "public: void __cdecl v8::sampler::Sampler::DoSample(void)" ( ?DoSample@Sampler @ sampler@v8 @@QEAAXXZ) v8_base.lib(cpu-profiler.obj) unresolved external symbol "public: static void __cdecl v8::sampler::Sampler::SetUp(void)" ( ?SetUp@Sampler @ sampler@v8 @@SAXXZ) referenced in function "private: static void __cdecl v8::internal::V8::InitializeOncePerProcessImpl(void)" ( ?InitializeOncePerProcessImpl@V8 @ internal@v8 @@CAXXZ) v8_base.lib(v8.obj) 

All error seems related to v8::sampler - any help is evaluated again!

+5
source share
3 answers

And it seems that I again answer to your question. I hope that the information I have listed in question, will be useful for anyone who is struggling with an outdated documentation, such as myself.

My update includes everything you need except for the fact that I did not even notice the project v8_libsampler and forgot to create for him a library file. As soon as I did it, and tied, I started to work!

+2
source

In the same way as you, I tried to set different settings for creating lib. And here are my steps:

  • After gn gen run gn args out / Default, uncomment is_component_build, I think the equivalent component = shared_library.
  • While I also have a problem with the failure in all.sln vs .net, I realized that msbuild can give me some dll / lib files.

Good luck.

+1
source

I made a similar configuration, but for VS2013 and running ninja to create a whole. Build me a DLL created a set, including v8.dll, with which I fully agree.

0
source

All Articles