我在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
任何帮助都将不胜感激。
答案 0 :(得分:3)
在Visual Studio中,构建选项对于debug
和release
构建是分开的。您可能正确地为调试模式设置了所有内容,但没有为发布模式设置,因此错误。
我完全忘记VS2005中的内容,但在VS2008中,解决方案属性对话框顶部有一个组合框,可让您在调试/发布/所有配置之间进行选择。
换句话说,您必须在发布模式下将其他依赖项添加到链接器属性部分。或者,将来,将配置设置为All configurations
进行所有更改。
答案 1 :(得分:0)
可能原因:用于构建v8 lib的命令切换和定义与用于构建使用它的代码的命令不匹配。
顺便说一句,如果您使用的是vs2005 CRT,则不需要:ntstc_msvcrt.lib
马丁