繁体   English   中英

DirectX多个DLL版本?

[英]DirectX multiple DLL versions?

我看到DirectX 9有多个DLL版本,例如

  • d3d9.dll
  • d3d9_25.dll
  • d3d9_42.dll
  • d3d9_43.dll

我想知道这些差异是什么,如何检测到差异? 我一直在使用GetModuleHandle("d3d9.dll"); ,但是如果应用程序具有d3d9_43.dll ,那么我的代码将不会检测到该应用程序正在使用DirectX,是吗? 如何在不对所有DLL版本进行硬编码的情况下进行检测?

如果代码使用D3D9,则在某些时候它将始终使用d3d9.dll 通常,它在导入表中,但可以动态链接( LoadLibrary )。 d3d9.dll为D3D(和COM,如果需要)提供了初始化代码,并导出Direct3DCreate9来创建新的IDirect3D9Object

d3d9.dll 不管版本时,版本通过使指定D3D_SDK_VERSIONDirect3DCreate9作为唯一的参数。 这表明应该使用什么版本,而不是任何DLL名称。

最常见的编号文件是D3D X文件。 这些是版本,用_43表示2010年6月的SDK(我相信每个SDK版本都有一个)。 如果程序需要D3DX中提供的帮助程序功能,则通常链接SDK的最新版本,并用数字将它们分开。

不属于D3DX的D3D9_ [number]文件遵循相同的系统(并且可能具有相同的SDK版本号关系),并且类似地提供特定于版本的功能。

这并不是说不使用d3d9.dll 绝大多数软件都使用该文件(实际上,我个人还没有看到没有使用该文件的D3D9应用程序)。 链接到D3D9.dll并传递SDK版本是使用D3D9的正确且推荐的方法。 测试它是安全可靠的,并且检查版本的最简单方法是拦截对Direct3DCreate9的调用。

暂无
暂无

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

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