Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.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::filesystem::不支持创建\u符号链接_C++_Boost_Symlink_Boost Filesystem - Fatal编程技术网

C++ boost::filesystem::不支持创建\u符号链接

C++ boost::filesystem::不支持创建\u符号链接,c++,boost,symlink,boost-filesystem,C++,Boost,Symlink,Boost Filesystem,我对这段代码有问题: #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",

我对这段代码有问题:

#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;
}
我浏览了Boost.Filesystem的
operations.cpp
文件,发现了以下内容:

  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
  }
BOOST\u FILESYSTEM\u DECL
无效创建符号链接(常量路径和收件人、常量路径和发件人、错误代码*ec)
{
#如果已定义(BOOST_WINDOWS_API)&&&_WIN32_WINNT<0x0600//SDK早于Vista和Server 2008
错误(为真,错误代码(不支持BOOST\u error\u,system\u category()),到,从,ec,
“boost::filesystem::create_directory_symlink”);
#否则
#如果已定义(BOOST_WINDOWS_API)&&&&u WIN32_WINNT>=0x0600
//查看Windows运行时dll是否实际支持
如果(错误(!创建符号链接api),
错误代码(不支持BOOST错误,系统类别()),
致,自,欧共体,,
“boost::filesystem::create_symlink”))
返回;
#恩迪夫
错误(!BOOST_CREATE_SYMBOLIC_链接(从.c_str(),到.c_str(),0),
to,from,ec,“boost::filesystem::create_symlink”);
#恩迪夫
}
这表明我的
\u WIN32\u WINNT
在编译Boost时可能不够高。我再次编译了Boost.Filesystem,但这次添加了
define=\u WIN32\u WINNT=0x601
,我仍然收到了一个异常消息。我也尝试过定义
BOOST\u WINDOWS\u API
,但这导致了编译错误


我使用的是Windows 7、Boost 1.54.0和
MinGW-x64-4.8.1-posix-seh-rev4
from.

我不确定,但我的意思是符号链接仅在unix系统上受支持。

我不确定,但我的意思是符号链接仅在unix系统上受支持

  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
  }