Can't use CreateProcess because of a build error: 'STARTUPINFO': undeclared identifier

Can't use CreateProcess because of a build error: 'STARTUPINFO': undeclared identifier

我正在尝试使用 CreateProcess(...) 启动进程 calc.exe。
当我构建解决方案时收到错误:
'STARTUPINFO': 未声明的标识符

我不明白为什么。
该错误仅在构建解决方案并且变量看起来已定义时出现。
当在变量上按 F12 时,它显示为:

可能与 #ifdef UNICODE 有关?

完整代码:

// CppConsoleApp.cpp : Defines the entry point for the console application.
//

#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include "stdafx.h"

int main()
{
    STARTUPINFO info;
    PROCESS_INFORMATION processInfo;
    ZeroMemory(&info, sizeof(info));
    info.cb = sizeof(info);
    ZeroMemory(&processInfo, sizeof(processInfo));

    LPCWSTR path = L"C:\Windows\System32\calc.exe";

    if (!CreateProcess(path, NULL, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo))
    {
        printf("CreateProcess failed (%d).\n", GetLastError());
    }

    WaitForSingleObject(processInfo.hProcess, INFINITE);
    CloseHandle(processInfo.hProcess);
    CloseHandle(processInfo.hThread);

    return 0;
}

你需要把 #include "stdafx.h" 放在第一位

或在项目设置中关闭预编译 header 以获得标准 C++ 的预处理行为。

对于预编译的 headers,包括预编译的 header 在内的所有内容都将被忽略,在您的情况下是 "stdafx.h"


关于您遇到的情况的警告,其中包含被忽略。如果你想在一般情况下使用预编译的 headers,你应该找到那个警告号并指定它应该被视为错误。