gpt4 book ai didi

c++ - boost::filesystem 和 VC++2010 的特定 LNK2001 错误

转载 作者:行者123 更新时间:2023-11-28 07:17:06 26 4
gpt4 key购买 nike

我被这个难住了。

我尝试使用 Win7 x64 编译一些跨平台代码。代码使用 Boost 1.54.0,特别是 boost::filesystem 库。

除了在尝试将字符串分配给 filesystem::path 时的少数函数调用外,我的绝大多数代码都可以编译。

例如,如果我要做一些简单的事情:

string path = (char *)"/This/Is/A/Fake/Path";
filesystem::path boostpath = path;

我在链接阶段得到以下信息:

LNK2001: unresolved external symbol "void __cdecl boost::filesystem::path_traits::convert(unsigned short const *,unsigned short const *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::codecvt<unsigned short,char,int> const &)" (?convert@path_traits@filesystem@boost@@$$FYAXPEBG0AEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV?$codecvt@GDH@5@@Z)

我不知道是什么原因造成的。其他 boost 库(和文件系统调用)工作得很好!我唯一能想到的是宽字符和 Windows 发生了一些事情。搜索 stackoverflow 没有找到我能找到的任何东西。链接错误本身似乎与字符串转换有关。

当然,这适用于 Linux/MacOSX。

提前致谢!

鲍勃。

最佳答案

我终于可以使用/Zc:wchar_t- 开关了。这涉及编辑“msvc.jam”文件。此文件位于您的 boost 源文件夹中。

路径是:your-boost-path/boost_1_54_0/tools/build/v2/tools/msvc.jam

我搜索了 wchar_t,它出现了 /Zc:wchar_t 标志。我通过将其更改为 /Zc:wchar_t- 来更改标志。

更新后的行如下所示:

 toolset.flags $(toolset).compile CFLAGS $(conditions) : /Zc:forScope /Zc:wchar_t- ;

然后我使用以下命令行编译了 boost。 (我专门根据需要使用了这些标志。)

bjam --toolset=msvc-10.0 architecture=x86 threading=multi link=static address-model=64 --build-type=complete install --prefix=C:\local\boost

编译后,我试了一下我的项目,它似乎工作正常!我还没有进行任何认真的测试,但它似乎可以编译。

注意:切换 wchar_t 标志会导致很多编译器警告和一些失败。虽然我没有使用 boost 提供的每个包,但我希望我需要的包没问题。

鲍勃..

关于c++ - boost::filesystem 和 VC++2010 的特定 LNK2001 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20057546/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com