Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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++ “促进”;“CreateProcess失败”;_C++_Visual Studio_Boost - Fatal编程技术网

C++ “促进”;“CreateProcess失败”;

C++ “促进”;“CreateProcess失败”;,c++,visual-studio,boost,C++,Visual Studio,Boost,这是在Visual Studio 2017(v141)中构建的“Hello World”测试。我怀疑问题是32位/64位不匹配,但我不确定如何检查 我将以下内容编译为Debug x86(它给出了一些警告,我用“SCL”安全“无”警告关闭这些警告,但我认为它们不相关,我还做了一个“定义”WIN32 WINNT 0x0501)。试图编译为x64抛出TRK0005:未能找到:“CL.exe”。系统找不到指定的文件 我正在链接到libboost_XXX-vc141-mt-1_64.lib库 实际代码是

这是在Visual Studio 2017(v141)中构建的“Hello World”测试。我怀疑问题是32位/64位不匹配,但我不确定如何检查

我将以下内容编译为Debug x86(它给出了一些警告,我用“SCL”安全“无”警告关闭这些警告,但我认为它们不相关,我还做了一个“定义”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");
}
#包括
#包括
#包括
名称空间bp=boost::process;
int main(int argc,char*argv[])
{
int result=bp::system(“echo Hello”);
}

抛出“微软C++异常:Booo::进程:进程SturyError在内存位置0x0137EE34”

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

int result = bp::system(bp::search_path("cmd.exe"), "/c", "echo Hello");
注意可选择用于定位命令shell


没有名为“echo.exe”的可执行文件。它是用于命令处理器的命令。例如dir、copy、if等。您可以使用“cmd.exe/c echo Hello”执行它。谢谢-我会在当前安装完成后立即尝试。如果我使用的是std::system而不是bp::system,那么我的代码行就可以工作。当然,system()函数不使用CreateProcess(),它要求Cmd.exe来完成这项工作。Unix方式。我不清楚Boost为什么不使用ShellExecuteEx(),这是一种以windows为中心的方式,要求shell执行命令。哦,好吧,为汉斯·帕桑的问题ping@KlemensMorgenstern你有没有尝试过处理异常,看看它说了什么?(/cc@HansPassant查看上一条消息)
int result = bp::system(bp::search_path("cmd.exe"), "/c", "echo %COMSPEC%");