在Visual Studio中构建和链接V8

插口

我很难弄清楚如何在Windows上构建Google的V8。

到目前为止,我有:

  • 已安装的depot_tools
  • 取得v8: fetch v8
  • 创建了项目文件: gn gen --ide=vs2015 out/Default
  • 在VS2015中构建了整个解决方案

我的问题是,这只会产生大量.obj文件,而不会产生.lib文件。

我将项目(v8,v8_base,v8_libbase等)设置为Configuration type: Static library (.lib)项目配置屏幕截图

我不确定如何使Visual Studio生成库文件。任何帮助表示赞赏!

更新资料

我设法使用以下步骤来生成库文件:

  • 打开VS Developer命令行
  • 浏览到包含OBJ文件的目录v8_basev8_libbasev8_external_snapshotv8_libplatform
  • 对于每一个.lib,使用以下lib命令手动构建一个lib /o:v8_base *.obj
  • 将所有这些lib文件与icui18n.lib一起复制到目录中icuuc.lib(这些文件在构建过程中很好地创建了。)

我现在正尝试实际使用这些库,并遇到了一个新问题,希望对您有所帮助。我已经在VS中链接了以下库:v8_base.lib; v8_libbase.lib; v8_external_snapshot.lib; v8_libplatform.lib; icui18n.lib; icuuc.lib; winmm.lib;但是,我遇到了一些未解决的符号问题:

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)

所有错误似乎都与v8::sampler-再次提供任何帮助有关

插口

好像我又在回答自己的问题。我希望我在问题中列出的信息对像我这样的过时文档感到困扰的人都将有用。

我的更新内容涵盖了所有必需的内容,除了我什v8_libsampler没有注意到项目并忘记为其生成库文件的事实。一旦完成该操作并将其链接起来,我就可以运行了!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章