如何在MingW中编译directX教程示例

时间:2014-09-23 21:31:33

标签: c++ visual-c++ gcc directx mingw

我搜索并搜索过,发现没有办法让MingX在MingW下编译,我看到其他人成功并尝试复制它无济于事。我已经阅读过这个类似的问题而且没有帮助,所以请不要指导我:How to compile a DirectX 11 app in MinGW

我一直试图让MingW与directX合作很长一段时间了,这里列出了我失败的尝试以及我读过的其他人的作品:

  • 下载MSVC标头并让MingW使用它们
  • 下载MingW-W64并用它来编译
  • 下载Reubens MingW-W64并使用它编译
  • 下载最新的MingW编译器并使用它
  • 下载TDM-GCC并使用它。
  • 混合编译器标头,不顾一切地试图让错误消失

我听说如果我只是将directX标头转储到适当的位置,我至少应该能够在链接器阶段失败,但是即使在我这样做之后我也会出现语法错误(授予了它们中的大部分都消失了。)每个编译器都会遇到自己独特的错误,在不同的点上失败,但在其他地方失败的地方显然会成功。到底是怎么回事?为什么完全有效的代码(所有由microsoft编写)在由任何其他编译器处理时突然无法编译?

1 个答案:

答案 0 :(得分:3)

不幸的是,包含DirectX 2010年6月SDK的样本远非“完美有效的代码”。它们使用了许多特定于Microsoft编译器的扩展。

在我放弃它基本无望之前,我在尝试编译Samples\C++\Direct3D\BasicHLSL中的示例时发现了以下Microsoft的特定依赖项:

我还没有提到微软的DirectX标题,比如依赖于微软的SAL annotation宏。但可以说MinGW没有使用这些DirectX标头的兼容版本。

其中一些问题相对容易解决。其他更困难,需要重写样本的不兼容部分。在我没有发现的样本中,可能还有更多的Microsoft依赖项。

最重要的是,如果没有首先修改样本和DXUT框架以使它们更具可移植性,就无法使用MinGW或任何其他GCC端口编译DirectX SDK附带的样本。