如何在不同的 c++ 项目中使用 Google V8 引擎?
How do I use the Google V8 Engine in a different c++ Project?
如果我在 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.lib
、v8_base (0,1,2,3) .lib
”和“v8.h
”。
是在一个新的c++项目中通过复制“hello-world.cc
”的内容,制作了一个cpp文件的示例代码。而我出现运行, "LNK2019
", "LNK1120
"错误.
1>----- Build started: Project: v8Application, Configuration: Debug Win32 -----
1> v8Application.cpp
1>v8Application.obj : error LNK2019: unresolved external symbol _main referenced in function"class v8::Platform * __cdecl v8::platform::CreateDefaultPlatform(int)" (?CreateDefaultPlatform@platform@v8@@YAPAVPlatform@2@H@Z) 1>c:\users\kito\documents\visual studio 2015\Projects\v8Application\Debug\v8Application.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
似乎不能定义 "platform :: CreateDefaultPlatform" 部分只在 'libplatform.h' 声明中打开。
但是,我会添加"src \ libplatform \ default-platform.cc" platform::CreateDefaultPlatform 已经定义,添加时出现其他错误。
""Ws2_32.lib
, winmm.lib
" 也被添加到 Additional Dependencies 属性.
的项目中
我该怎么做?
您必须先创建您的项目,然后 LINK 使用 V8,但您不得将 V8 的源文件添加到您的项目中。
首先要做的是编译 V8 并记下生成库的位置(或将它们复制到您选择的目录)。 V8 的 include 文件也是如此,它们必须可用才能包含在您的项目中(不建议将它们复制到您的项目目录)。
在您的控制台项目的设置中,转到 Linker -> Input -> Additional Dependencies
并将 v8.lib
放在那里。如果错误仍然存在,您可能还想添加 v8_libplatform.lib
。
类似的内容适用于包含文件,在您的项目设置中,您应该转到 C/C++ -> General -> Additional Include Directories
并在那里添加 V8 的包含目录。
但请记住,您必须先单独编译 v8,然后将 lib 和 include 目录暴露给您的新项目。
更新:
您的项目文件表明您仅针对配置 "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
不在附加依赖项列表中,您可能需要添加它。
如果我在 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.lib
、v8_base (0,1,2,3) .lib
”和“v8.h
”。
是在一个新的c++项目中通过复制“hello-world.cc
”的内容,制作了一个cpp文件的示例代码。而我出现运行, "LNK2019
", "LNK1120
"错误.
1>----- Build started: Project: v8Application, Configuration: Debug Win32 -----
1> v8Application.cpp
1>v8Application.obj : error LNK2019: unresolved external symbol _main referenced in function"class v8::Platform * __cdecl v8::platform::CreateDefaultPlatform(int)" (?CreateDefaultPlatform@platform@v8@@YAPAVPlatform@2@H@Z) 1>c:\users\kito\documents\visual studio 2015\Projects\v8Application\Debug\v8Application.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
似乎不能定义 "platform :: CreateDefaultPlatform" 部分只在 'libplatform.h' 声明中打开。 但是,我会添加"src \ libplatform \ default-platform.cc" platform::CreateDefaultPlatform 已经定义,添加时出现其他错误。
""Ws2_32.lib
, winmm.lib
" 也被添加到 Additional Dependencies 属性.
我该怎么做?
您必须先创建您的项目,然后 LINK 使用 V8,但您不得将 V8 的源文件添加到您的项目中。
首先要做的是编译 V8 并记下生成库的位置(或将它们复制到您选择的目录)。 V8 的 include 文件也是如此,它们必须可用才能包含在您的项目中(不建议将它们复制到您的项目目录)。
在您的控制台项目的设置中,转到 Linker -> Input -> Additional Dependencies
并将 v8.lib
放在那里。如果错误仍然存在,您可能还想添加 v8_libplatform.lib
。
类似的内容适用于包含文件,在您的项目设置中,您应该转到 C/C++ -> General -> Additional Include Directories
并在那里添加 V8 的包含目录。
但请记住,您必须先单独编译 v8,然后将 lib 和 include 目录暴露给您的新项目。
更新:
您的项目文件表明您仅针对配置 "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
不在附加依赖项列表中,您可能需要添加它。