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,你应该找到那个警告号并指定它应该被视为错误。
我正在尝试使用 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,你应该找到那个警告号并指定它应该被视为错误。