【发布时间】:2020-12-02 10:06:39
【问题描述】:
我尝试在我的项目中包含 wincodec.h,但如果我尝试编译它会出现错误,我的项目中没有任何其他头文件或 cpp 文件。
我的代码(经过编辑以便更容易理解问题):
#pragma comment (lib, "windowscodecs.lib")
//it doesn't matter if include here also the Windows.h
//[about the 1st EDIT] i don't include any d3dx (10 or 11) headers here! However the compiler still gives me errors!!!
#include <wincodec.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
return 0;
}
这是我得到的错误;
Error C3646 'PixelFormat': unknown override specifier
Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int
Error C2061 syntax error: identifier 'DXGI_JPEG_AC_HUFFMAN_TABLE' (same error also for DXGI_JPEG_DC_HUFFMAN_TABLE and DXGI_JPEG_QUANTIZATION_TABLE)
所有这些错误都来自 wincodec.h 文件。 我也尝试从链接器>输入>附加依赖项中包含库 windowscodecs.lib,但仍然有相同的错误,所以我从那里删除,现在我将它包含在源代码中。 任何人都知道我为什么会收到这些错误以及如何解决?
我使用 Visual Studio 2019 (v142)、windows sdk 10、iso c++ 17。 构建为版本,x64。 子系统:Windows(/SUBSYSTEM:WINDOWS)
第一次编辑: 我才发现问题! 在库目录中,我有这个路径:C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include,如果我删除它,它构建得很好。
现在的问题是那里没有这条路径,我不能使用 D3D 部分所需的 2 个标头:d3dx10.h 和 d3dx11.h。
现在知道如何解决这个问题了吗?
第二次编辑:
所以,我现在将图书馆目录更改为:$(VC_IncludePath);$(WindowsSDK_IncludePath);$(DXSDK_DIR)/include
只有这个错误消失了:Error C3646 'PixelFormat': unknown override specifier
【问题讨论】:
-
尝试包含#include
,而不是#include -
@SimonMourier 我试过了,但遇到了同样的错误。
-
@yournamehere 使用
/std:c++17或不使用#include <windows.h>,发布的代码构建良好,其余设置保留默认值。您的项目类型是什么,您是否覆盖了WINVER、_WIN32_WINNT等以针对特定(旧)版本的Windows? -
@dxiv 我在哪里可以看到项目类型,如果我覆盖了 WINVER,_WIN32_WINNT?
-
可能是视觉工作室被窃听或其他什么......事实上我可以在一个新项目中很好地构建它。很奇怪的问题
标签: c++ compiler-errors direct3d wic