2017-09-24 89 views
0

的我讀this article和剛剛創建的VisualStudio中2017年CPP控制檯項目,包括一些頭。包括PortableDevice.h會導致很多錯誤

stdafx.h中:

#pragma once 

#include "targetver.h" 

#include <stdio.h> 
#include <tchar.h> 

#include <PortableDeviceApi.h> 
#include <PortableDevice.h> 

所有我所做的就是這一點,我得到了很多的錯誤。

오류 C4430 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\propkeydef.h 35 
오류 C2143 구문 오류: ','이(가) '&' 앞에 없습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\propkeydef.h 35 
오류 C2803 'operator =='에는 클래스 형식의 정식 매개 변수가 적어도 하나는 있어야 합니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\propkeydef.h 35 
오류 C2805 이항 'operator =='에 매개 변수가 너무 적습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\propkeydef.h 35 
오류 C2065 'pkeyOne': 선언되지 않은 식별자입니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\propkeydef.h 35 
오류 C2228 '.pid' 왼쪽에는 클래스/구조체/공용 구조체가 있어야 합니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\propkeydef.h 35 
오류 C2065 'pkeyOther': 선언되지 않은 식별자입니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\propkeydef.h 35 
오류 C2228 '.fmtid' 왼쪽에는 클래스/구조체/공용 구조체가 있어야 합니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\propkeydef.h 35 
오류 C3861 'IsEqualIID': 식별자를 찾을 수 없습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\propkeydef.h 35 
오류 C4430 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\propkeydef.h 36 
오류 C2143 구문 오류: ','이(가) '&' 앞에 없습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\propkeydef.h 36 
오류 C2803 'operator !='에는 클래스 형식의 정식 매개 변수가 적어도 하나는 있어야 합니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\propkeydef.h 36 
오류 C2805 이항 'operator !='에 매개 변수가 너무 적습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\propkeydef.h 36 
오류 C2065 'pkeyOne': 선언되지 않은 식별자입니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\propkeydef.h 36 
오류 C2065 'pkeyOther': 선언되지 않은 식별자입니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\propkeydef.h 36 
오류 C2065 'GUID_DEVINTERFACE_WPD': 선언되지 않은 식별자입니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 18 
오류 C4430 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 18 
오류 C2440 '초기화 중': 'initializer list'에서 'int'(으)로 변환할 수 없습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 18 
오류 C2065 'GUID_DEVINTERFACE_WPD_PRIVATE': 선언되지 않은 식별자입니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 23 
오류 C4430 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 23 
오류 C2374 'DEFINE_GUID': 재정의. 여러 번 초기화했습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 23 
오류 C2440 '초기화 중': 'initializer list'에서 'int'(으)로 변환할 수 없습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 23 
오류 C2065 'GUID_DEVINTERFACE_WPD_SERVICE': 선언되지 않은 식별자입니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 28 
오류 C4430 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 28 
오류 C2374 'DEFINE_GUID': 재정의. 여러 번 초기화했습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 28 
오류 C2440 '초기화 중': 'initializer list'에서 'int'(으)로 변환할 수 없습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 28 
오류 C2065 'WPD_EVENT_NOTIFICATION': 선언되지 않은 식별자입니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 404 
오류 C4430 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 404 
오류 C2374 'DEFINE_GUID': 재정의. 여러 번 초기화했습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 404 
오류 C2440 '초기화 중': 'initializer list'에서 'int'(으)로 변환할 수 없습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 404 
오류 C2065 'WPD_EVENT_OBJECT_ADDED': 선언되지 않은 식별자입니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 408 
오류 C4430 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 408 
오류 C2374 'DEFINE_GUID': 재정의. 여러 번 초기화했습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 408 
오류 C2440 '초기화 중': 'initializer list'에서 'int'(으)로 변환할 수 없습니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 408 
오류 C2065 'WPD_EVENT_OBJECT_REMOVED': 선언되지 않은 식별자입니다. ConsoleApplication1 c:\program files (x86)\windows kits\10\include\10.0.15063.0\um\portabledevice.h 412 
... 

我不知道如何處理這個,因爲我不熟悉Windows開發,這是第一次創建Windows應用程序。我該如何解決這個問題,或者我怎樣才能得到這方面的信息?

+0

它抱怨C++特定的聲明。編譯器以某種方式認爲它正在編譯一個.c文件,但仍然定義了「__cplusplus」宏。不要自己定義它,我想。一定要使用項目模板開始,不要在沒有告訴任何人的情況下大幅改動。 –

回答

0

更新:我離開了最初的回答,但我認爲這是無關緊要的。你是否肯定你在你的問題中按照以下順序包含了文件?

#include <PortableDeviceApi.h> 
#include <PortableDevice.h> 

因爲這並不在空控制檯應用程序產生的任何錯誤,但是,你應該扭轉如下順序,錯誤列表中選擇您的問題相符:

#include <PortableDevice.h> 
#include <PortableDeviceApi.h> 

上述所有假設你安裝了SDK。

最初的回答(很可能是無關的問題) 這只是一種猜測,因爲你的問題是不完整的(因爲它不具有完全的代碼來重現問題),但我想你可能忘記添加proper main returning int which could result in C4430到您的控制檯應用程序或其他一些簡單的錯誤,如錯誤列表中的下一個C2143。一些聲明後缺少;int定義或聲明。

通過評論它的部分,看看到底是什麼導致了錯誤,在源代碼中執行二進制搜索,如果你不能找到它自己在一個小的代碼片段,上傳你的源代碼在你的問題。

+0

我剛剛創建了空的控制檯應用程序項目並添加了兩個代碼。 「#include 」和「#include 」。這兩個代碼會導致錯誤。 – RedLaboratory

+0

@RedLaboratory,是否有所作爲,如果你的stdafx.h搬完兩行代碼到您的控制檯應用程序的app_name.cpp(或任何你的main()是)?它會產生相同的錯誤還是不同的錯誤? –