将我的 DirectX 应用程序移植到其他机器

Posted

技术标签:

【中文标题】将我的 DirectX 应用程序移植到其他机器【英文标题】:Porting my DirectX application to other machines 【发布时间】:2015-06-28 00:22:17 【问题描述】:

我最近在 DirectX 中创建了一个 3d 环境并制作了一个小型“演示”应用程序。我使用 Windows 8 SDK 在 Win 7 VS 2013 上创建了该应用程序。我想在我的网站上建立一个应用程序供所有人使用。但是,我不确定如何确切地做到这一点。当我构建 x64 版本并尝试在我的 Win 10 桌面或我的兄弟 win 7 桌面上运行它时,它不会运行。只要我点击应用程序说“GraphicsProject.exe 已停止工作”,它就会崩溃。 .exe 在我创建它的笔记本电脑(在 VS 之外发布版本)和另一台 Win 7 计算机上运行良好。

不工作的计算机安装了 DirectX (DX11+),我已经在它们上面安装了 C++ 和 C 运行时库。还有什么可能导致崩溃或与我的代码直接相关?

我意识到问题可能有多种原因,但我不确定要查看哪些信息才能缩小问题范围。如果您需要任何其他信息,请询问!

【问题讨论】:

这是您代码中某处的错误。确保您正在检查所有返回值是否有错误。使用调试器查看崩溃的位置并找出原因。 我如何在 VS 之外使用发布版本进行调试?另外,什么可能导致代码在一个 x64 Win 7 而不是另一个上运行良好? 您可以在计算机上下载并安装 Microsoft 的 Windows 调试工具,但安装 Visual Studio 可能更简单。任何数量的事情都可能导致崩溃。使用调试器可以帮助您找到问题。 @RossRidge 说的是真的,但请尝试在不使用 Visual Studio 的情况下对其进行调试。可能发生错误是因为您的程序依赖于 VS 自动安装的东西,因此安装它可能会隐藏问题。 如果您不使用曲面细分等高级技术,请尝试在着色器模型 4_0 上运行 【参考方案1】:

根据对这个确切问题的经验(让 DirectX 发布应用程序在非开发机器上工作):

不要在发布机器上安装任何 MS 调试器。这会污染测试机器,你只会延长问题。正如罗斯所说,调试环境正在补偿您的代码中的某些崩溃,或者某些环境/显卡设置不匹配(可能是着色器不匹配/测试机器上的设备驱动程序过时)。

开始在您的应用程序中构建日志记录。在早期阶段进行开发,创建编译器指令 (#ifdef) 以打开和关闭它们,并使用多个级别的调试(详细、警告、错误、信息)。写出您输入的每个函数名称、发送的参数、传回的结果。学会爱上伐木。

这种方法保证您不会用完测试机器,或者兄弟开始抱怨您在他们的机器上安装了太多东西来测试您的软件。您为查明问题而必须执行的迭代次数与您包含的日志记录量成正比。

【讨论】:

以上是关于将我的 DirectX 应用程序移植到其他机器的主要内容,如果未能解决你的问题,请参考以下文章

将 DirectX 移植到 OpenGL ES (iPhone)

DirectX 12 应用程序在 Windows 11 中崩溃

如何将我的 repo 附加到 heroku 应用程序

在 C# WPF 或 Windows 窗体应用程序中使用 DirectX c++ DLL

将使用 Psyco 的 Python 应用程序移植到 Mac

如何快速将我的应用程序中的位置发送到其他应用程序?