boost::filesystem::create_symlink не поддерживается

У меня проблема с этим фрагментом кода:

#include <iostream>
#include <boost/filesystem.hpp>

namespace bfs = boost::filesystem;

int main(int argc, char **argv)
{
    try
    {
        bfs::create_symlink("C:\\Users\\Administrator\\Desktop\\test.txt",
                        "C:\\Users\\Administrator\\Desktop\\test_symlink.txt");
    }
    catch (std::exception& e)
    {
        std::cout << e.what() << std::endl;
    }

    return 0;
}

Вызов функции create_symlink приводит к возникновению исключения с сообщением:

boost::filesystem::create_directory_symlink: The request is not supported: "C:\\Users\\Administrator\\Desktop\\test.txt", "C:\\Users\\Administrator\\Desktop\\test_symlink.txt"

Я просмотрел файл operations.cpp Boost.Filesystem и нашел это:

  BOOST_FILESYSTEM_DECL
  void create_symlink(const path& to, const path& from, error_code* ec)
  {
#   if defined(BOOST_WINDOWS_API) && _WIN32_WINNT < 0x0600  // SDK earlier than Vista and Server 2008
    error(true, error_code(BOOST_ERROR_NOT_SUPPORTED, system_category()), to, from, ec,
      "boost::filesystem::create_directory_symlink");
#   else

#     if defined(BOOST_WINDOWS_API) && _WIN32_WINNT >= 0x0600
        // see if actually supported by Windows runtime dll
        if (error(!create_symbolic_link_api,
            error_code(BOOST_ERROR_NOT_SUPPORTED, system_category()),
            to, from, ec,
            "boost::filesystem::create_symlink"))
          return;
#     endif

    error(!BOOST_CREATE_SYMBOLIC_LINK(from.c_str(), to.c_str(), 0),
      to, from, ec, "boost::filesystem::create_symlink");
#   endif
  }

что говорит о том, что мой _WIN32_WINNT мог быть недостаточно высоким при компиляции Boost. Я пошел и снова скомпилировал Boost.Filesystem, но на этот раз с добавлением define=_WIN32_WINNT=0x601, и я все еще получаю исключение с тем же сообщением. Я также попытался определить BOOST_WINDOWS_API , который кажется устарело, но это приводило к ошибкам компиляции.

Я использую Windows 7, Boost 1.54.0 и MinGW-x64-4.8.1-posix-seh-rev4 из mingw-builds.


person Tuntuni    schedule 19.10.2013    source источник


Ответы (1)


Я не совсем уверен, но я имею в виду, что символическая ссылка поддерживается только в системах Unix.

person frank    schedule 21.10.2013