Boost" CreateProcess失败"

时间:2017-10-31 05:50:20

标签: c++ visual-studio boost

这是一个" Hello World"在Visual Studio 2017中构建的测试(v141)。我怀疑问题是一些32位/ 64位不匹配,但我不知道如何检查。

我将以下内容编译为Debug x86(它提供了一些警告,我用_SCL_SECURE_NO_WARNINGS关闭但我认为它们不相关,我也做#define _WIN32_WINNT 0x0501)。尝试编译为x64抛出TRK0005:找不到:" CL.exe"。系统找不到指定的文件。

我链接到libboost_XXX-vc141-mt-1_64.lib库。

实际代码是

#include <iostream>
#include <boost/process.hpp>
#include <boost/process/windows.hpp>

namespace bp = boost::process;
int main(int argc, char * argv[])
{
    int result = bp::system("echo Hello");
}

引发&#34; Microsoft C ++异常:boost :: process :: process_error在内存位置0x0137EE34。&#34;

1 个答案:

答案 0 :(得分:1)

显然在Windows上,没有默认shell的概念。您可以显式调用一个:

int result = bp::system(bp::search_path("cmd.exe"), "/c", "echo Hello");
  

注意(可选)使用%COMSPEC%查找命令shell

int result = bp::system(bp::search_path("cmd.exe"), "/c", "echo %COMSPEC%");