如何在其他c ++项目中使用Google V8 Engine?

时间:2016-08-22 01:25:50

标签: javascript c++ v8 embedded-v8

如果我在Google V8引擎中导入.lib.h文件,它会尝试在不同的c ++项目中使用它们。

我是否需要导入任何名称的文件?

v8的源代码是编译和构建时,

  • cctest
  • fuzzer_support
  • 生成-字节码的期望
  • gmock
  • GTEST
  • icui18n
  • icuuc
  • inspector_protocol
  • json_fuzzer_lib
  • mksnapshot
  • parser_fuzzer_lib
  • regexp_fuzzer_lib
  • 单元测试
  • V8
  • v8_base_0
  • v8_base_1
  • v8_base_2
  • v8_base_3
  • v8_external_snapshot
  • v8_libbase
  • v8_libplatform
  • v8_libsampler
  • v8_nosnapshot
  • v8_simple_json_fuzzer
  • v8_simple_parser_fuzzer
  • v8_simple_regexp_fuzzer
  • v8_simple_wasm_asmjs_fuzzer
  • v8_simple_wasm_fuzzer
  • wasm_fuzzer_lib
  • wasm_asmjs_fuzzer_lib

生成名称文件。

我只是使用v8,并输出了javascript的运行值。

我猜,似乎只使用“v8.libv8_base (0,1,2,3) .lib”和“v8.h”。

通过复制“hello-world.cc”的内容,示例代码是否在新的c ++项目中,制作了一个cpp文件。我跑了,“LNK2019”,“LNK1120”错误发生。

  

1> -----构建开始:项目:v8Application,配置:调试Win32 -----
  1 GT; v8Application.cpp
  1> v8Application.obj:错误LNK2019:函数“class v8 :: Platform * __cdecl v8 :: platform :: CreateDefaultPlatform(int)”中引用了未解析的外部符号_main(?CreateDefaultPlatform @ platform @ v8 @@ YAPAVPlatform @ 2 @ H @ Z)1> c:\ users \ kito \ documents \ visual studio 2015 \ Projects \ v8Application \ Debug \ v8Application.exe:致命错误LNK1120:1个未解析的外部组件
  ==========构建:0成功,1个失败,0个最新,0个跳过==========

似乎一定不能定义“platform :: CreateDefaultPlatform”部分仅在'libplatform.h'声明中被转换。 但是,我会添加“src \ libplatform \ default-platform.cc”,已经定义了platform :: CreateDefaultPlatform,在添加时会发生其他错误。

Ws2_32.libwinmm.lib”也被添加到Additional Dependencies属性的项目中。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您必须创建项目,然后使用V8进行LINK,但不得将V8的源文件添加到项目中。

要做的第一件事是编译V8并记下库的生成位置(或将它们复制到您选择的目录中)。这同样适用于V8的包含文件,它们必须可用才能包含在您的项目中(不建议将它们复制到项目目录中)。

在控制台项目的设置中,转到Linker -> Input -> Additional Dependencies并将v8.lib放在那里。如果错误仍然存​​在,您可能还想添加v8_libplatform.lib

类似的内容适用于包含文件,在项目设置中,您应该转到C/C++ -> General -> Additional Include Directories并在那里添加V8的include目录。

但请记住,您必须首先单独编译v8并将lib和include目录公开给您的新项目。

<强>更新

您的项目文件表明您仅为configuración“Release”配置了您的项目,但上面的输出表明您正在调试模式下进行编译。

项目配置:

<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    ...
    <Link>
        <AdditionalDependencies>ws2_32.lib;winmm.lib;v8.lib;v8_base_0.lib;v8_base_1.lib...
    </Link>
<ItemDefinitionGroup

上面的编译器输出:

1>----- Build started: Project: v8Application, Configuration: Debug Win32 -----

您必须为所有配置配置项目,或者至少使用您设置的配置对其进行测试。

另一方面,v8_libplatform.lib不在其他依赖项列表中,您可能想要添加它。