链接到V8在发布模式下不起作用

时间:2011-05-27 08:22:43

标签: c++ visual-studio-2005 v8

我在visual studio 2005上以发布模式构建了v8库,放置了生成的.lib文件(处于发布模式)并针对它们编译了我的项目。

虽然在调试模式下一切正常(编译并正确运行),但在发布模式下,我收到以下链接错误(好像lib文件不在那里)。

error LNK2001: unresolved external symbol "public: class v8::Local<class v8::Boolean> __thiscall v8::Value::ToBoolean(void)const " (?ToBoolean@Value@v8@@QBE?AV?$Local@VBoolean@v8@@@2@XZ)
error LNK2001: unresolved external symbol "public: bool __thiscall v8::Value::IsInt32(void)const " (?IsInt32@Value@v8@@QBE_NXZ)
error LNK2001: unresolved external symbol "public: bool __thiscall v8::Value::IsNumber(void)const " (?IsNumber@Value@v8@@QBE_NXZ)
error LNK2001: unresolved external symbol "public: bool __thiscall v8::Value::IsBoolean(void)const " (?IsBoolean@Value@v8@@QBE_NXZ)
error LNK2001: unresolved external symbol "public: bool __thiscall v8::Value::IsObject(void)const " (?IsObject@Value@v8@@QBE_NXZ)
error LNK2001: unresolved external symbol "public: bool __thiscall v8::Value::IsArray(void)const " (?IsArray@Value@v8@@QBE_NXZ)
error LNK2001: unresolved external symbol "public: bool __thiscall v8::Value::IsFunction(void)const " (?IsFunction@Value@v8@@QBE_NXZ)
error LNK2001: unresolved external symbol "public: bool __thiscall v8::Value::IsNull(void)const " (?IsNull@Value@v8@@QBE_NXZ)

我的链接器属性具有以下附加依赖项。

msvcrt.lib ntstc_msvcrt.lib Psapi.lib winmm.lib Ws2_32.lib $(SolutionDir)\external_libs\release\v8.lib

和我的$(SolutionDir)\external_libs\release文件夹包含文件:

v8.lib, v8_base.lib, v8_snapshot.lib

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:3)

在Visual Studio中,构建选项对于debugrelease构建是分开的。您可能正确地为调试模式设置了所有内容,但没有为发布模式设置,因此错误。

我完全忘记VS2005中的内容,但在VS2008中,解决方案属性对话框顶部有一个组合框,可让您在调试/发布/所有配置之间进行选择。

换句话说,您必须在发布模式下将其他依赖项添加到链接器属性部分。或者,将来,将配置设置为All configurations进行所有更改。

答案 1 :(得分:0)

可能原因:用于构建v8 lib的命令切换和定义与用于构建使用它的代码的命令不匹配。

顺便说一句,如果您使用的是vs2005 CRT,则不需要:ntstc_msvcrt.lib

马丁