如何使我的应用程序加载正确的d3d9 * DLL

时间:2014-03-05 01:33:15

标签: visual-studio dll directx directx-9

我已经安装了2010年6月的Direct X SDK并编写了一个简单的DX应用程序。

我设置了正确的标题包含和库包含路径,即它们指向

C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include
C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86

一切都很好,但是当我运行应用程序时,我注意到正在加载的d3d *模块是C:\Windows\SysWOW64\d3d9.dll& C:\Windows\SysWOW64\d3dx9d_43.dll

我假设在DirectX SDK目录中与libs链接将确保SDK中的dll,即C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Developer Runtime\x86 将被加载。

我不确定它是否与此相关,但我的应用程序最终得到NULL设备句柄。 如何确保加载正确的DLL?

2 个答案:

答案 0 :(得分:1)

  1. DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)添加到环境
  2. "%DXSDK_DIR%\Developer Runtime\x86""%DXSDK_DIR%\Developer Runtime\x64"添加到系统PATH变量中。
  3. 使用 DirectX控制面板%DXSDK_DIR%\Utilities\bin\x86\dxcpl.exe%DXSDK_DIR%\Utilities\bin\x64\dxcpl.exe)启用调试运行时
  4. 在DirectX包含之前,代码中的
  5. #define D3D_DEBUG_INFO
  6. 如果您使用的是比Windows 7更新的Windows,则无法在 DirectX控制面板中切换到调试运行时。您可以尝试在那里手动设置注册表标志:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Direct3DHKEY_CURRENT_USER\SOFTWARE\Microsoft\Direct3D。但很可能它不起作用(在Windows 7上比Windows 7更新),因为DirectX 9不久前被弃用了,最近一些更新打破了所有旧的东西(甚至是好的'PIX')。我听说过另外一个选项:使用已检查版本的Windows,但没有尝试过。
  7. 祝你好运!

    参考文献:

答案 1 :(得分:0)

关于System32和SysWOW64

'System32'文件夹用于64位文件,'SysWOW64'文件夹用于32位文件

它听起来很混乱,特别是对于文件夹名称,这是由于向后的可比性。有关详细信息,请阅读The 'Program Files (x86)' and 'SysWOW64' folders explained

事实上,您正在64位Windows上构建32位DirectX应用程序。它将使用SysWOW64的32位dll。

  

我不确定它是否与此相关,但我的申请结束了   获取NULL设备句柄

我确信这与dll位无关,你应该检查CreateDevice函数的返回值,看看发生了什么。

  

如何让我的应用程序加载正确的dll?

我认为你不需要自己做,系统会为你处理大部分情况,如果你真的想自己做,请看看Dynamic-Link Library Search Order

关于SO的相关帖子