关于C#:如何在MingW中编译directX教程示例 | 珊瑚贝

How do I compile a directX tutorial sample in MingW


我找了又找,没有办法让directX在MingW下编译,我看到其他人成功了,试图复制它,但无济于事。我已经阅读过这个类似的问题,但它没有帮助,所以请不要指导我:如何在 MinGW 中编译 DirectX 11 应用程序。

我已经尝试让 MingW 与 directX 合作很长时间了,以下是我的失败尝试列表以及我读到的对其他人有用的内容:

  • 下载 MSVC 头文件并让 MingW 使用它们
  • 下载 MingW-W64 并使用它进行编译
  • 下载 Reubens MingW-W64 并使用它进行编译
  • 下载最新的 MingW 编译器并使用它
  • 下载 TDM-GCC 并使用它。
  • 拼命尝试混合编译器头文件以使错误消失

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

  • “完全有效的代码(全部由微软编写)”。 (哈哈。对不起。)Visual Studio 既然存在,它就在做它自己的事情。许多标准语言特性缺乏或实现不佳,相反,MS 引入了大量与标准 C/C 不兼容的新关键字等(并且通常与除 VS 本身之外的每个主要编译器不兼容)。不是说VS不好,而是”遵循标准”是MS做不到的。
  • 具体来说,您要编译哪个 DirectX 教程示例?
  • @RossRidge 我正在尝试编译 basicHLSL


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

在我因为本质上没有希望而放弃它之前,我在尝试编译 Samples\\C++\\Direct3D\\BasicHLSL 中的示例时发现了以下 Microsoft\\ 的特定依赖项:

  • __noop 内在的
  • 宏 __min 和 __max
  • 各种”安全”版本的标准函数,例如 wsprintf_s 和 strcpy_s
  • 非标准预处理器令牌粘贴
  • 允许 goto 跨变量初始化
  • __uuidof 运算符

Microsoft 的 DirectX 标头还有一些我没有提到的问题,例如依赖于 Microsoft 的 SAL 注释宏。可以说这是 MinGW 的失败,因为没有这些 DirectX 标头的兼容版本。

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

最重要的是,如果不首先修改示例和 DXUT 框架以使其更便携,就无法使用 MinGW 或任何其他 GCC 端口编译 DirectX SDK 中包含的示例。

  • 请注意,在 MSDN 代码库中使用这些示例的最新版本,这些示例使用已清理的 DXUT,您可能会有更好的运气。我仍然使用 Safer CRT 函数、SAL2 注释和 -_uuidof。也就是说,您可以轻松地将所有 SAL2 注释宏定义为”空白”(如果您不使用 /analyze,这就是 Windows SDK 中的 SAL 标头已经执行的操作),将宏用于更安全的 CRT,然后处理 __uuidof .或者只是使用 VS Express。


来源:https://www.codenong.com/26005054/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_8911.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?