简体   繁体   English

针对March09SDK编译DX 9.0c应用程序=>无法与较早的DX 9.0c DLLs一起运行=>问题:)

[英]Compiling DX 9.0c app against March09SDK => Cannot run with older DX 9.0c DLLs => Problem :)

I'm unable to do a scenario from subject. 我无法从主题做一个方案。

I have DirectX 9 March 2009 SDK installed, which is 9, "sub"-version c, but "sub-sub"-version is 41, so libs (d3dx9.lib d3d9.lib) are linking exports to dxd3d_41.dll. 我安装了DirectX 2009年3月9日SDK,即9,“ sub” -sub c版本,但“ sub-sub” -version 41,因此libs(d3dx9.lib d3d9.lib)将导出链接到dxd3d_41.dll。

What happens when I try to run my app on machine which has DX9.0c but not redistributable from march 2009 is now obvious :), it fails because it cannot find dxd3d_41.dll. 现在,当我尝试在具有DX9.0c但不能从2009年3月重新分发的计算机上运行我的应用程序时,会发生什么事情:),它失败了,因为找不到dxd3d_41.dll。

Which is standard solution for this problem? 哪个是解决此问题的标准方法? How Am I supposed to compile my app to be supported by all machines having DX 9.0c? 我应该如何编译所有具有DX 9.0c的计算机以支持我的应用程序? Is that even achievable? 这甚至可以实现吗?

Thanx 感谢名单

You need to install the runtime that matches the SDK you use to compile. 您需要安装与用于编译的SDK相匹配的运行时。

The only way to force this to work on ALL machines with DirectX9c installed is to use an old SDK (the first 9.0c SDK). 强制在所有安装了DirectX9c的计算机上运行此方法的唯一方法是使用旧的SDK(第一个9.0c SDK)。 However, I strongly recommend avoiding this. 但是,我强烈建议您避免这种情况。 You are much better off just using March 09, and install the March runtimes along with your application installation. 仅使用3月9日,情况会好得多,并与应用程序安装一起安装March运行时。

The simplest solution is to link to the Microsoft DirectX end-user runtime updater on your download page and tell people to run this first to make sure that the runtime components are up to date before installing your application. 最简单的解决方案是链接到下载页面上的Microsoft DirectX最终用户运行时更新程序,并告诉人们首先运行此更新程序,以确保安装应用程序之前运行时组件是最新的。

After that, the next simplest thing is to bundle the necessary runtime updater with your application and have users run it before running your installer. 之后,接下来最简单的事情是将必要的运行时更新程序与您的应用程序捆绑在一起,并让用户在运行安装程序之前先运行它。

All of this is documented in the SDK documentation. 所有这些都记录在SDK文档中。

The rules are that if you link to d3dx9 then you are expected to handle making sure that the required redist runtime components are installed. 规则是,如果链接到d3dx9,则应确保确保已安装必需的redist运行时组件。

Have a look at the page 'DirectX Installation for Game Developers' in the DXSDK docs. 请查看DXSDK文档中的“面向游戏开发人员的DirectX安装”页面。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM