【问题标题】:Visual Studio 2019 has errors in built-in librariesVisual Studio 2019 的内置库有错误
【发布时间】:2020-06-18 07:59:36
【问题描述】:

第一次在这里提问,所以请多多包涵,或者让我知道我是否应该做些不同的事情。

我刚刚安装了新版本的 Visual Studio 2019,并正在尝试构建一个非常基本的 C++ 控制台应用程序,其中包括 Windows.h 和 iostream。在尝试构建时,我从 IDE 附带的库中遇到了 100 多个构建错误。构建输出如下所示。有没有人知道为什么 VS2019 附带的库可能会自行导致如此多的构建错误?

在您建议 Google 并查看此处显示的其他问题之前,我已经在这两个地方以及 Microsoft 的知识库中进行了搜索,但未能找到任何相关结果。谢谢!

x32control.cpp:

#include "common.h"

int main ()
{
    return errAndDie ("\nTesting errAndDie.\n\n");
}

common.cpp:

#include <iostream>
#include <winddi.h>


int errAndDie (const char* errorMessage) {
    std::cout << errorMessage;
    return -1;

common.h:

#ifndef COMMON_H
#define COMMON_H

#include <iostream>
#include <Windows.h>

int errAndDie (const char *errorMessage);

#endif

错误:

1>common.cpp
1>D:\Windows Kits\10\Include\10.0.18362.0\um\winddi.h(90,22): error C3646: 'Data1': unknown override specifier
1>D:\Windows Kits\10\Include\10.0.18362.0\um\winddi.h(90,22): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\Windows Kits\10\Include\10.0.18362.0\um\winddi.h(91,22): error C3646: 'Data2': unknown override specifier
1>D:\Windows Kits\10\Include\10.0.18362.0\um\winddi.h(91,22): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\Windows Kits\10\Include\10.0.18362.0\um\winddi.h(92,22): error C3646: 'Data3': unknown override specifier
1>D:\Windows Kits\10\Include\10.0.18362.0\um\winddi.h(92,22): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\Windows Kits\10\Include\10.0.18362.0\um\winddi.h(93,22): error C3646: 'Data4': unknown override specifier
1>D:\Windows Kits\10\Include\10.0.18362.0\um\winddi.h(93,22): error C2143: syntax error: missing ',' before '['
1>D:\Windows Kits\10\Include\10.0.18362.0\um\winddi.h(93,25): error C2143: syntax error: missing ')' before ';'
1>D:\Windows Kits\10\Include\10.0.18362.0\um\winddi.h(93,25): error C2238: unexpected token(s) preceding ';'
1>D:\Windows Kits\10\Include\10.0.18362.0\um\ddrawint.h(32,1): error C2146: syntax error: missing ';' before identifier 'GUID_MiscellaneousCallbacks'
1>D:\Windows Kits\10\Include\10.0.18362.0\um\ddrawint.h(32,122): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\Windows Kits\10\Include\10.0.18362.0\um\ddrawint.h(33,1): error C2146: syntax error: missing ';' before identifier 'GUID_Miscellaneous2Callbacks'
1>D:\Windows Kits\10\Include\10.0.18362.0\um\ddrawint.h(33,124): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\Windows Kits\10\Include\10.0.18362.0\um\ddrawint.h(34,1): error C2146: syntax error: missing ';' before identifier 'GUID_VideoPortCallbacks'
...
1>D:\Windows Kits\10\Include\10.0.18362.0\um\ddraw.h(296,44): error C3646: 'lpDDSZBufferSrc': unknown override specifier
1>D:\Windows Kits\10\Include\10.0.18362.0\um\ddraw.h(296,44): fatal error C1003: error count exceeds 100; stopping compilation
1>httpserver.cpp
1>x32control.cpp
1>Generating Code...
1>Done building project "x32control.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

【问题讨论】:

  • 没有代码,我想没人能回答你的问题..
  • 也发布您的“简单”代码
  • 查看common.cpp 的前几行以了解您包含哪些头文件以及按什么顺序包含在内会很有用。
  • 请允许我澄清一下,我的代码根本没有在任何这些错误中引用。我无法在此处完全包含 Microsoft 在其 SDK 中提供的所有代码行。暂时离开后,我将发布我的代码。

标签: c++ visual-studio-2019 build-error


【解决方案1】:

我找到了问题。在 common.cpp 中包含 winddi.h 是问题所在。我不完全确定它是如何进入那里的,因为我不记得曾经输入过它,而且我不经常复制/粘贴。我很抱歉在发布之前没有注意到这一点。有时,新的上下文更容易看到这些东西。

【讨论】:

  • 问题不是“在common.cpp 中包括winddi.h”,而是在common.cpp不包括 Windows.h,你应该同时包括这两个winddi.hWindows.hcommon.h 中,并在您的 common.cpp 中包含 common.h
  • 谢谢。我只是推断这是问题所在,因为删除该包含确实为我解决了它。我对 C++ 比较陌生,所以我会牢记这一点。仍在学习如何正确构建事物。
猜你喜欢
  • 2022-10-14
  • 2021-09-02
  • 2021-04-16
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多