这是一个" 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;
答案 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%");