我正在使用带有 VS10 的 boost 1_53 库。
在链接过程中我得到了许多未解析的符号。如下所示:
error LNK2019: unresolved external symbol "void __cdecl boost_1_53_0::filesystem::path_traits::convert(char const *,char const *,class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > &,class std::codecvt<unsigned short,char,int> const &)" (?convert@path_traits@filesystem@boost_1_53_0@@YAXPEBD0AEAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEBV?$codecvt@GDH@5@@Z) referenced in function "void __cdecl boost_1_53_0::filesystem::path_traits::convert(char const *,class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > &,class std::codecvt<unsigned short,char,int> const &)" (?convert@path_traits@filesystem@boost_1_53_0@@YAXPEBDAEAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEBV?$codecvt@GDH@5@@Z)
我检查了 /LIBPATH 设置是否正确,“boost_1_53_0_filesystem-mt.lib”也在链接行中。
我使用dumpbin在“lib”中查找符号,如下所示:
00000036 REL32 00000000 515 ?convert@path_traits@filesystem@boost_1_53_0@@YAXPEBD0AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AEBV?$codecvt@_WDH@5@@Z (void __cdecl boost_1_53_0::filesystem::path_traits::convert(char const *,char const *,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > &,class std::codecvt<wchar_t,char,int> const &))
此参数更改是否会导致问题?
编辑:
我喜欢添加更多细节:
以前我使用的是 boost 1_48,它工作正常。我发现在 path_traits 下的 boost 1_48 符号以@GDH@5@@Z结尾,而在 boost 1_53 中,它以@_WDH@5@@Z
结尾
但它仍然试图搜索以@GDH@5@@Z
结尾的 synbol
这可以导致错误?
如果是这样,为什么要使用这些符号?