gpt4 book ai didi

c++ - 无法使用 Boost.process

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:26 26 4
gpt4 key购买 nike

我下载并打包了 Boost 库版本 1.54.0。我做了所有类似的事情来回答这个问题:How to use Boost in Visual Studio 2010然后我从这里下载并解压 Boost.process:http://www.highscore.de/boost/process/并按照这个问题的答案做了所有事情:How to compile Boost.Process library? .

我将 holder process 和 process.hpp 放在 holder boost 中,将其他 holder 进程放入 libs 并尝试使用“--with-process”用 b2.exe 和 bjam.exe 编译它,但得到“错误的库”命名为“进程”。

无论如何,我将库包含到我的项目中并放入以下代码:

    namespace bp = ::boost::process;

int main()
{

std::string exec = "G:\\Detect.exe";
std::vector<std::string> args;
args.push_back("--version");

bp::context ctx;
ctx.stdout_behavior = bp::silence_stream();

bp::child c = bp::launch(exec, args, ctx);

return 0;
}

当我运行它时出现一些错误:

1>c:\boost_1_54_0\boost\process\detail\pipe.hpp(129): error C2665: 'boost::system::system_error::system_error' : none of the 7 overloads could convert all the argument types
1> c:\boost_1_54_0\boost\system\system_error.hpp(39): could be 'boost::system::system_error::system_error(int,const boost::system::error_category &,const std::string &)'
1> c:\boost_1_54_0\boost\system\system_error.hpp(43): or 'boost::system::system_error::system_error(int,const boost::system::error_category &,const char *)'
1> while trying to match the argument list '(DWORD, overloaded-function, const char [54])'
1>c:\boost_1_54_0\boost\process\operations.hpp(130): error C2039: 'filesystem_error' : is not a member of 'boost::filesystem'
1>c:\boost_1_54_0\boost\process\operations.hpp(130): error C3861: 'filesystem_error': identifier not found

我该怎么办?

最佳答案

我也遇到过类似的情况。

我是从https://svn.boost.org/svn/boost/sandbox/process/下载的非官方的 Boost.Process 库(修订版 86799 表示该站点)并将其与 Boost 1.55 一起使用。然后只需将 header 放入 Boost 包含文件夹(我没有看到任何 *.cpp 文件,因此该库似乎完全内联)。发现了什么:

  • /process/operations.hpp(130): 'filesystem_error' 不是 boost::filesystem 的成员
    放入 operations.hpp 文件 #include <boost/filesystem.hpp>

  • /process/detail/pipe.hpp(129): 'boost::system::system_error::system_error'
    附加到 boost::system::system_category函数调用,即它将变为 boost::system::system_category() .

  • /process/detail/win32_ops.hpp(329): '.size' 左边必须有 class/struct/union
    基本上模板是const char* , 但函数按原样实现 std::string .因此我只是在函数的开头添加了类似 std::string exe (exe_); 的代码(exe_const char* 参数的新名称)。也许不是最好的解决方案,但我认为已经足够好了。

希望这对您有所帮助。

关于c++ - 无法使用 Boost.process,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19907644/

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