当我<d3d11.h>
在 Embarcadero RadStudio seattle 10 C++ IDE 中包含文件时,编译器给出以下错误:
[bcc64 错误] d3d11.h(9622): 'selectany' 属性仅在使用外部链接初始化全局数据时有效。
请帮我。
当我<d3d11.h>
在 Embarcadero RadStudio seattle 10 C++ IDE 中包含文件时,编译器给出以下错误:
[bcc64 错误] d3d11.h(9622): 'selectany' 属性仅在使用外部链接初始化全局数据时有效。
请帮我。
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 = {};