0

当我<d3d11.h>在 Embarcadero RadStudio seattle 10 C++ IDE 中包含文件时,编译器给出以下错误:

[bcc64 错误] d3d11.h(9622): 'selectany' 属性仅在使用外部链接初始化全局数据时有效。

请帮我。

4

1 回答 1

0

d3d11.h是 Direct3D 的 Microsoft 标头。

Microsoft 的风格selectany与 Embarcadero 的风格略有不同selectany

特别是,Microsoft 的风格支持全局对象实例的默认初始化,而 Embarcadero 则不支持。全局变量必须用数据初始化。 d3d11.h(作为 Microsoft 标头)依赖于 Microsoft 的selectany行为。有问题的变量 ( D3D11_VIDEO_DEFAULT) 没有使用任何数据进行初始化,这在 Microsoft 的编译器中是可以的,但在 Embarcadero 的编译器中是不行的。

您必须更改 Embarcadero 的副本d3d11.h以添加初始化:

//extern const DECLSPEC_SELECTANY CD3D11_VIDEO_DEFAULT D3D11_VIDEO_DEFAULT;
extern const DECLSPEC_SELECTANY CD3D11_VIDEO_DEFAULT D3D11_VIDEO_DEFAULT = {};
于 2015-11-14T03:40:14.870 回答