【问题标题】:Including PortableDevice.h causes a lot of errors包含 PortableDevice.h 会导致很多错误
【发布时间】:2017-09-24 04:24:35
【问题描述】:

我阅读了this article 并刚刚在 VisualStudio 2017 中创建了一个 cpp 控制台项目,其中包括一些标头。

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 应用程序。我该如何解决这个问题或如何获得相关信息?

【问题讨论】:

  • 它抱怨 C++ 特定的声明。编译器以某种方式认为它正在编译一个 .c 文件,但仍然定义了 __cplusplus 宏。不要自己定义,我猜。一定要使用项目模板开始,不要在没有告诉任何人的情况下随意更改。

标签: c++ visual-studio-2017 wpd


【解决方案1】:

更新:我留下了最初的答案,但我认为这无关紧要。您确定按照问题中的以下顺序包含文件吗?

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

由于这不会在空控制台应用程序中产生任何错误,但是,如果您将顺序颠倒如下,错误列表与您的问题相符:

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

以上所有假设您已安装 SDK。

初始答案(很可能与问题无关) 这只是一个猜测,因为您的问题不完整(因为它没有完整的代码来重现问题),但我认为您可能忘记将 proper main returning int which could result in C4430 添加到您的控制台应用程序或其他一些简单的错误作为下一个你的错误列表C2143。有些在声明后缺少;,或者在定义或声明中缺少int

通过注释部分代码在源代码中执行二进制搜索,以查看究竟是什么导致了错误,如果您在小代码 sn-p 中找不到它,请在您的问题中发布您的源代码。

【讨论】:

  • 我刚刚创建了空的控制台应用程序项目并添加了两个代码。 “#include ”和“#include ”。这两个代码导致错误。
  • @RedLaboratory,如果您将这两行代码从 stdafx.h 移动到控制台应用程序的 app_name.cpp (或您的 main() 所在的任何位置),会有什么不同吗?它会产生相同的错误还是不同的错误?
猜你喜欢
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-10
  • 2016-10-26
  • 1970-01-01
相关资源
最近更新 更多