我在 Visual Studio 2005 上以 Release模式构建了 v8 库,将生成的 .lib
文件(在 Release模式下)放入其中,并针对它们编译了我的项目。
虽然在 Debug模式下一切正常(正确编译和运行),但在 Release模式下我收到以下链接错误(就好像 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
如有任何帮助,我们将不胜感激。
最佳答案
在 Visual Studio 中,debug
和 release
构建的构建选项是分开的。您可能为 Debug模式正确设置了所有内容,但没有为 Release模式正确设置,因此会出现错误。
我忘记了 VS2005 中的具体布局,但在 VS2008 中,解决方案属性对话框顶部有一个组合框,可让您在调试/发布/所有配置之间进行选择。
换句话说,您必须在 Release模式下将其他依赖项添加到链接器属性部分。或者,将来进行所有更改时,将配置设置为所有配置
。
关于c++ - 在 Release模式下链接到 V8 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6149633/