5

我下载并构建了 JS V8 以在 VS2010 发布模式下使用。现在我尝试运行Hello World 示例

#include "v8.h"

int _tmain(int argc, _TCHAR* argv[])
{
    v8::HandleScope handle_scope;

    v8::Persistent<v8::Context> context = v8::Context::New();

    v8::Context::Scope context_scope(context);

    v8::Handle<v8::String> source = v8::String::New("'Hello' + ', World'");

    v8::Handle<v8::Script> script = v8::Script::Compile(source);

    v8::Handle<v8::Value> result = script->Run();

    context.Dispose();

    v8::String::AsciiValue ascii (result);

    printf ("%s\n", *ascii);

    return 0;
}

我添加了其他依赖项:

"C:\v8\build\Release\lib\preparser_lib.lib"
"C:\v8\build\Release\lib\v8_base.lib"

当我尝试编译和运行程序时,遇到了链接错误:

1>------ Build started: Project: V8_example, Configuration: Release Win32 ------
1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
1>v8_base.lib(platform-win32.obj) : error LNK2001: unresolved external symbol __imp__inet_addr@4
...
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

当我设置“忽略所有默认库:是(/NODEFAULTLIB)”时,出现了以下错误:

1>------ Build started: Project: V8_example, Configuration: Release Win32 ------
1>v8_base.lib(strtod.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
1>v8_base.lib(full-codegen-ia32.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
...
1>c:\users\admin\documents\visual studio 2010\Projects\V8_example\Release\V8_example.exe : fatal error LNK1120: 141 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

有没有人尝试过运行这个示例或知道如何修复这些错误?

4

3 回答 3

1

该错误是由缺少符号引起的,该符号__imp__inet_addr@4位于Ws2_32.lib.

转到项目属性 -> 链接器 -> 输入 -> 附加依赖项。只需添加即可Ws2_32.lib

于 2012-10-29T07:30:01.087 回答
1

我必须包括以下库: v8_base.lib;v8_snapshot.lib;ws2_32.lib;winmm.lib

不要定义/NODEFAULTLIB:LIBCMT这导致我的构建失败。

如果您对我是如何发现的感到好奇,我查看了 GYP 生成的 ALL.sln 并检查了shell目标。它是一个必须在某些时候与 v8_base 链接的可执行文件,因此它具有所需的链接器选项。然而,它有点难以找到。

于 2013-03-14T05:14:39.670 回答
0

怎么样/NODEFAULTLIB:LIBCMT,只排除这个库?我也相信您需要链接 v8_snapshot.lib 或 v8_nosnapshot.lib 或者您构建共享库并链接到 v8.lib

于 2013-02-05T08:33:22.510 回答