如何在没有SDK的机器上运行D3D9程序(已编译)? 我有一个简单的3D应用程序,用C++和D3D9编程,使用MSVC++ + 2008 Express。几周前,我不得不格式化我的硬盘,所以DirectX SDK目前还没有安装

如何在没有SDK的机器上运行D3D9程序(已编译)? 我有一个简单的3D应用程序,用C++和D3D9编程,使用MSVC++ + 2008 Express。几周前,我不得不格式化我的硬盘,所以DirectX SDK目前还没有安装,directx,compilation,Directx,Compilation,但是,我发现在项目的调试文件夹中找到的exe文件没有运行。它给出的错误是: 由于未找到d3dx9d_38.dll,此应用程序无法启动。重新安装应用程序可能会解决此问题 当然,在我安装SDK之后,它就工作了。然后我编译了一个发布版本,认为这就是解决方案。然后我卸载了SDK并尝试运行.exe文件。 还是给了我错误 那么,如何让这样的.exe文件在没有SDK的机器上运行呢?我认为没有SDK就无法运行应用程序。请参阅,这需要运行SDK 但是,您可以尝试简单地将SDK中所需的dll文件与可执行文件放在同一

但是,我发现在项目的调试文件夹中找到的exe文件没有运行。它给出的错误是:

由于未找到d3dx9d_38.dll,此应用程序无法启动。重新安装应用程序可能会解决此问题

当然,在我安装SDK之后,它就工作了。然后我编译了一个发布版本,认为这就是解决方案。然后我卸载了SDK并尝试运行.exe文件。 还是给了我错误


那么,如何让这样的.exe文件在没有SDK的机器上运行呢?

我认为没有SDK就无法运行应用程序。请参阅,这需要运行SDK


但是,您可以尝试简单地将SDK中所需的dll文件与可执行文件放在同一目录中。

我遵循了前面所述的解决方案

我将d3dx9_38.dll文件复制到我的发布文件夹中。它仍然不起作用。但是,我将dll文件重命名为d3dx9d_38.dll。然后它成功了。
想知道为什么我不得不重命名为该文件的调试版本,即使它是发布版本…

?你在问题中说是来自调试目录的exe。。。d3dx9d_38.dll当然是一个调试dll,不允许分发。根据d3d版本生成。您已经针对调试D3DX DLL进行了链接。因此,您已经重命名了发行版DLL,使其看起来像调试DLL,并且它可以正常工作。谢天谢地,这里没有需要担心的仅调试挂钩。请更改发行版版本的链接器设置,以链接到发行版模式的DirectX库,而不是调试库。哦,是的。我后来就这么做了。我不知道调试版本和发布版本有不同的属性页。但这样做之后,它给了我奇怪的编译错误。在谷歌上搜索,我发现了一些文章,其中陈述了发布版本中编译器优化过程的各种原因。。。隐马尔可夫模型。。。