我正在尝试使用Boost:
获取当前临时文件夹boost::system::error_code error;
auto tmp_path = boost::filesystem::temp_directory_path(error);
if (boost::system::errc::success != error.value())
{
std::cout << error.message() << std::endl;
}
在visual studio 2013调试会话期间调查tmp_path的值时,似乎tmp_path的值是不正确的- VS显示{m_pathname=<Bad Ptr>}
.
下面的代码也失败了,异常是"string too long",这可能与这个问题有关:
std::string tmp_file_str("test");
boost::filesystem::path tmp_file(tmp_file_str);
使用msvc工具集在本地重新编译Boost:
cd boost-folder
bootstrap
.b2 toolset=msvc-12.0 variant=release link=static,shared threading=multi --with-chrono --with-date_time --with-filesystem --with-system --with-thread --with-test
环境:- Windows 8.1 Version 6.3.9600 Build 9600 x64
- Visual Studio 2013 Version 12.0.30110.00 Update 1
由于两个因素的巧合而发生错误:
- BOOST_ALL_DYN_LINK;BOOST_ALL_NO_LIB)
- 链接的boost库处于发布模式,但项目处于调试模式
用variant=release,debug
重新编译boost,在链接器属性中指定-gd-
库,并在路径中添加-gd-
dll,解决了这个问题。