Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 来自boost文件系统的未解析符号_C++_Boost_Linker - Fatal编程技术网

C++ 来自boost文件系统的未解析符号

C++ 来自boost文件系统的未解析符号,c++,boost,linker,C++,Boost,Linker,我正在将boost 1_53库与VS10一起使用。 在链接过程中,我得到了许多未解析的符号。例如: 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<un

我正在将boost 1_53库与VS10一起使用。
在链接过程中,我得到了许多未解析的符号。例如:

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)
错误LNK2019:未解析的外部符号“void uu cdecl boost_1_53_0::filesystem::path_traits::convert(char const*,char const*,class std::basic_string&,class std::codevt const&”)(?convert@path_traits@filesystem@boost_1_53_0@@YAXPEBD0AEAV?$basic_string@GU?$char_traits@G@性病病毒$allocator@G@2@@std@@AEBV$codecvt@GDH@5@@Z)函数“void uu cdecl boost_1_53_0::filesystem::path_traits::convert(char const*,class std::basic_string&,class std::codecvt const&)”中引用(?convert@path_traits@filesystem@boost_1_53_0@@Yaxpebdaav?$basic_string@GU?$char_traits@G@性病病毒$allocator@G@2@@std@@AEBV$codecvt@GDH@5@@Z)
我检查了/LIBPATH设置是否正确,并且链接行中出现了“boost\u 1\u 53\u 0\u 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 &))
00000036 REL32 00000000 515?convert@path_traits@filesystem@boost_1_53_0@@YAXPEBD0AEAV?$basic_string@_WU?$char_traits@_W@性病病毒$allocator@_W@2@@std@@AEBV$codecvt@_WDH@5@@Z(void\uuuu cdecl boost\u1\u53\u0::文件系统::路径特征::转换(char const*,char const*,class std::basic\u string&,class std::codevt const&)
此参数更改是否导致问题

编辑:
我想添加更多细节:
之前我使用的是boost 1_48,它工作得很好。 我发现在boost 1中,路径下的48个符号以结尾@GDH@5@@Z在boost 153中以@_WDH@5@@Z
但它仍然试图以@GDH@5@@Z
这可能会导致错误?

如果是这样,为什么要使用这些符号?

除非您已经构建了Boost库的所有可能排列,否则必须确保编译器设置与用于构建Boost的设置相匹配

相关设置包括:

  • 调试与发布
  • 静态链接运行时与DLL
  • 单线程与多线程
名称
boost\u 1\u 53\u 0\u filesystem-mt.lib
意味着boost库是在发布模式、多线程、DLL运行时构建的

这就是您构建项目的方式吗?

右键单击 ->性质 ->一般选项卡 检查是否

公共语言运行时支持=“无公共语言运行时支持”

->在c/c++->代码生成中 检查是否

运行库多线程DLL(/MD)

最后在菜单栏中转到 ->工具->选项->项目和解决方案->VC++目录->库文件 检查你是否给出了你通常所处的完整路径

“\boost\u 1\u 53\stage\lib”


注意:VS2008中提到了设置路径,您可以检查是否使用64位编译的boost库而不是32位库(反之亦然)。这就是我在使用boost::filesystem时发生的事情

若boost库是在发布模式下构建的,则只能在发布模式下链接mode@Thomas:我仅在释放模式下使用它。这可能有助于:Thx获得支持。我构建了boost 1_48,当时它运行良好。问题是从相同的代码开始的。一旦我开始使用boost 1_53,我构建boost 1_53的方式与构建boost 1_48的方式相同。我编辑了一个问题,提供了更多详细信息,以供支持。我检查了它看起来的设置fine@Abhi那么,你找到答案了吗,还是u仍然卡住了?哦,等等,我注意到你已经将boost构建为多线程,那么你是否尝试将运行库更改为多线程(/MT)?thx支持我终于了解了问题的真正原因,这是由于QT造成的(我从未想过会这样)我使用/Zc:wchar\u t标志构建boost,而使用/Zc:wchar\u t构建QT-这会导致错误这应该是一个注释