如何使用 system() 函数 (MSVC) 编译 c++ 代码?

Posted

技术标签:

【中文标题】如何使用 system() 函数 (MSVC) 编译 c++ 代码?【英文标题】:How to compile c++ code with system() function (MSVC)? 【发布时间】:2020-03-27 15:02:17 【问题描述】:

我正在尝试使用 c++ 编译带有 system() 函数的 c++ 文件。

void CodeGenerator::GenerateExe(ProgramNode* parsed_tree, std::string folder_path, std::string file_name)

    std::string cpp_name = folder_path + file_name + ".cpp";

    GenerateCppFile(parsed_tree, cpp_name);
    std::string command;
    command += "cl ";
    command += cpp_name + " /OUT ";
    command += folder_path;

    system(command.c_str());

我知道我可以在开发人员 cmd 中执行此操作,但 system() 函数会打开常规 cmd,因此它无法识别“cl”命令。

请告诉如何打开开发者 cmd 或如何设置环境以通过 c++ 编译代码。

【问题讨论】:

cl.exe 必须在路径中才能运行。您还需要使用 vcvarsall.bat 设置环境(这是您在 Visual Studio 中打开开发人员命令提示符时执行的那个) 你首先需要知道 CL.exe 的路径,而不是使用 system 而是 CreateProcessW 【参考方案1】:

您可以通过将cl的路径添加到环境变量中来做到这一点:

可以这样做:

打开运行窗口,您可以通过在搜索中输入run 来完成此操作。 输入sysdm.cpl 选择高级分隔符 点击环境变量 在系统变量中选择path并点击edit 单击new 并添加cl 命令的路径。就我而言,cl.exe 文件位于

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\Hostx64\x64

变化不大,但您必须在您的机器中使用正确的路径。

在此之后,您必须打开一个新的 cmd 窗口以检测更改并从您计算机的任何位置运行 cl 命令。

【讨论】:

以上是关于如何使用 system() 函数 (MSVC) 编译 c++ 代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MSVC 在 C++ 中定义外部 C 结构返回函数?

g++ , msvc 2015,2017System: Windows

如何在 MSVC++6 中声明 IEEE 数学函数,如“ilogbf”?

如何从 MSVC 中的 libsndfile-1.dll 访问函数?

如何使用 msvc 2019 编译 QT 4 dll?

为啥 MSVC 使用 SSE2 指令来处理这种琐碎的事情?