2017-02-08 5 views
0

CreateProcess(...)으로 calc.exe 프로세스를 시작하려고합니다.
내가 오류받은 솔루션 건물입니다 :
'STARTUPINFO를'내가 왜 이해하고 있지 않다빌드 오류로 인해 CreateProcess를 사용할 수 없습니다. 'STARTUPINFO': 선언되지 않은 식별자

enter image description here

선언되지 않은 식별자.
솔루션을 빌드하고 변수가 정의 된 것처럼 보이는 경우에만 오류가 발생합니다.
그것으로 나타나는 변수에 F12 가압 :
enter image description here

아마도이 #ifdef UNICODE 관련된?

전체 코드 : 당신은 모든 #include "stdafx.h"을 둘 필요가

// 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; 
} 
+0

보기에'/ showIncludes' cl 옵션을 사용합니다. 실제로는 어떤 파일이 포함되어 있습니다. 'STARTUPINFO'가 정의 된 파일이 포함되어 있는지 확인하십시오. 모양이 어떤 '# if' 블록에 정의되어 있는지 확인하십시오. 이 블록에 들어가십니까? – RbMm

+0

_ [STARTUPINFO] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms686331(v=vs.85) .aspx)의 MSDN 페이지를 읽으십시오. _ – ryyker

+0

@ryyker - 그래서 무엇? – RbMm

답변

3

.

또는 표준 C++ 사전 처리 동작을 얻으려면 프로젝트 설정에서 미리 컴파일 된 헤더를 끄십시오.

미리 컴파일 된 헤더를 사용하면 사전 컴파일 된 헤더의 모든 내용 (현재 "stdafx.h")이 무시됩니다.


포함 된 내용에 대한 경고가 있습니다. 사전 컴파일 된 헤더를 일반적으로 사용하려면 해당 경고 번호를 찾아서 오류로 처리되도록 지정해야합니다.

+0

감사! 오류가 너무 간단하고 불분명합니다. 나는'#include "stdafx.h"를 처음으로 움직 였고 이제는 작동한다. – E235

+0

미리 컴파일 된 헤더 파일은 사용자 제공 헤더 파일을 통해 생성됩니다. 따라서 정확한 구문은'#include "stdafx.h"'이며, '#include '이 아닙니다. – IInspectable

+0

@IInspectable : 감사합니다! 결정된. :) –