С модами ниже, ваш код компилируется для меня.Это применимо с или без #define
, который вы упомянули.
boost::filesystem::path inpath("C:\\PathThatDoesNotExist");
std::cout << "Folder \'" << inpath.external_directory_string()
<< "\' does not exist.";
Какую версию Boost и какой компилятор вы используете?
Я нахожусь на Boost 1.44, Visual C ++ Express 2010. external_directory_string
, кажется, возвращает std::string
для меня.
РЕДАКТИРОВАТЬ: Однако, когда я явно устанавливаю версию Boost Filesystem, как это,Я получаю вашу ошибку:
# define BOOST_FILESYSTEM_VERSION 3
Версия по умолчанию для меня на VS 2010 - 2, поэтому я бы выяснил, почему boost/filesystem/path.hpp
устанавливает это значение на 3 в вашей сборке.
ИзBoost docs (1.45):
Это версия 2 библиотеки файловой системы.
версия 3, также доступна крупная версия со многими новыми и улучшенными функциями, но она нарушает некоторые существующиекод.
Похоже, если вы вернете свой билд к v2, вы окажетесь на более твердой почве.