如何在不同的C++项目中使用Google V8引擎?

4
如果我在Google V8引擎中导入.lib和.h文件,它将尝试在不同的C ++项目中使用它们。
我需要导入任何名称的文件吗?
当源代码编译和构建v8时,
以下文件名会生成:
cctest
fuzzer_support
generate-bytecode-expectations
gmock
gtest
icui18n
icuuc
inspector_protocol
json_fuzzer_lib
mksnapshot parser_fuzzer_lib
regexp_fuzzer_lib unittests
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”的内容。然后我运行,出现“LNK2019”,“LNK1120”错误。
1>-----开始构建: 项目: v8Application,配置: 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
==========构建:0成功,1失败,0最新,0跳过==========

看起来必须未定义“platform :: CreateDefaultPlatform”部分仅在'libplatform.h'声明中被打开。

然而,我会在“src \ libplatform \ default-platform.cc”中添加platform :: CreateDefaultPlatform已经被定义,其他错误发生在添加时。

"Ws2_32.libwinmm.lib"也已添加到附加依赖项属性的项目中。

我该怎么做?


仅供参考,我使用的是vs2015和Windows 10。 - Kito
不同的控制台 - 以什么方式不同? - Jaromanda X
我在vs2015中创建了一个“win32控制台应用程序”项目。我尝试在cpp文件中放置“hello-world”示例句子进行测试。 - Kito
1个回答

1
你必须创建项目,然后与V8进行LINK,但是不要将V8的源文件添加到您的项目中。
首先要做的是编译V8并注意库文件生成的位置(或将它们复制到您选择的目录中)。对于V8的包含文件也是同样的,它们必须可用才能包含在您的项目中(不建议将它们复制到您的项目目录中)。
在控制台项目的设置中,转到Linker -> Input -> Additional Dependencies,然后放置v8.lib。如果错误仍然存在,则可能需要添加v8_libplatform.lib
类似的事情也适用于包含文件,在您的项目设置中,应该转到C/C++ -> General -> Additional Include Directories,然后添加V8的包含目录。
但请记住,您必须先单独编译v8,并将lib和include目录暴露给新项目。 更新: 您的项目文件表明,您只为“Release”配置了您的项目,但上面的输出表明您正在以Debug模式编译。
项目配置:
<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 不在附加依赖项列表中,您可能需要添加它。


我已经将v8示例源代码中的“hello-world”的内容复制到新项目中。我使用的方式有误吗?我设置了“链接器->输入->附加依赖项”和“C / C ++ ->常规->附加包含目录”。 - Kito
该位置的新项目为 "C:\Users\kito\Documents\Visual Studio 2015\Projects\v8Application"。v8Application 的配置包括文件夹和 lib 文件夹,其中有 v8Application.cpp 文件和项目文件。在 lib 文件夹中,有 "v8.lib、v8_base_0.lib、v8_base_1.lib、v8_base_2.lib、v8_base_3.lib、v8_libbase.lib、v8_libplatform.lib" 和 "v8_nosnapshot.lib" 文件。 - Kito
我在"链接器->输入->附加依赖项"中设置了v8.lib和v8_base(0,1,2,3)。在include文件夹中有一个包含以下h文件的文件:"v8,v8config,v8-debug,v8-experimental,v8-platform,v8-profiler,v8-testing,v8-util,v8-version"。libplatform文件夹位于include文件夹中。其中包含一个"libplatform,v8-tracing"的h文件。版本可能不同,但请参考来自"https://github.com/v8/v8/"链接中的"include"文件夹。 - Kito
谢谢你的回答,ichramm。测试在Debug和Release模式下均可见,当上传“.vcxproj文件”时正在测试Release模式。我已尝试添加v8-libplatform.lib,但出现了许多LNK2001LNK2019错误。我尝试使用上述代码进行测试,但结果相同。 - Kito
今天我尝试了其他的方法,发现需要导入一些库文件,但不知道在哪里找到库文件列表,这似乎是个问题。目前我正在测试中,但如果再深入学习一下,似乎可以解决这个问题。非常感谢您提供答案。 - Kito
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接