首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >D3D9应用程序是否与确切的D3DX DLL版本相关联?

D3D9应用程序是否与确切的D3DX DLL版本相关联?
EN

Stack Overflow用户
提问于 2011-05-24 10:15:07
回答 2查看 679关注 0票数 1

如果我在D3DX June2007_d3dx9_34上构建了我的应用程序,而目标系统有一个更新的Nov2007_d3dx9_36版本,那么这应该是个问题吗?

我使用MS‘工具分发D3DX DLL,但是我注意到一台“干净”的PC (以前没有安装D3DX )我收到了一个关于缺少D3DX DLL的错误。在试图找出安装程序本身是否不工作之前,我想知道是否可能提供一个太过--新版本的DLL是问题所在--应用程序会寻找一个具有确切名称的DLL吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-24 10:45:04

D3DX库不是向后兼容的,而且不同版本之间的API可能会发生变化.因此,目标系统必须具有与您构建应用程序相同的D3DX版本--较新的版本不能工作。

如果您在应用程序中使用依赖沃克,它应该向您显示DLL上有一个具有确切版本号的依赖项。

票数 2
EN

Stack Overflow用户

发布于 2011-07-06 08:33:10

DirectX SDK中的可再发行性包含了D3DX dlls的整个历史。安装DirectX可再发行版的最新版本将使您的系统最终得到这些dll的每个版本。应用程序只允许通过将cab文件从可再发行版的目录结构中删除来安装它们所需的文件,以减少可再发行组件的大小,这就是您如何最终获得43的dll,而不是37。

如果您从应用程序中删除了D3DX和D3DCOMPILER dll的依赖项,则可以确保应用程序将工作,因为d3d9 d3d10和d3d11核心dll与版本无关,并且还绑定到windows服务包版本(例如,D3D11 for Vista来自Vista SP2或Win7股票安装)。

另一种消除依赖关系并让应用程序启动的方法是使dll成为延迟加载模块,因此只有在需要时才加载dll(例如在开发环境中编译着色器)。只要您确信着色器存在于最终用户机器上,它就不需要编译着色器,也不会崩溃。使用您选择的更好的错误消息调用LoadLibrary和手动调用函数是一种更安全的选择,但要做的工作要多得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6108914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档