C++ “促进”;“CreateProcess失败”;
这是在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库 实际代码是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库 实际代码是
#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%");