2014-03-05 100 views
1

我已经安装了2010年6月的Direct X SDK并编写了一个简单的DX应用程序。如何使我的应用程序加载正确的d3d9 * dll

我已经设置了正确的头和库包括路径,也就是说,它们指向

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目录库链接将确保在SDK中的dll文件,即C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Developer Runtime\x86 会被加载。

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

+0

'NULL'设备错误

相关讯息可以是完全不相关于运行时使用。如果你不能成功启用调试运行时,并且无法自己调试它,请在StackOverflow上发布另一个问题,包括相关的代码以及你试图解决的问题,这样我们就可以看到问题所在。 – Drop

回答

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. #define D3D_DEBUG_INFO在你的代码的DirectX包括
  5. 如果您使用的是Windows是较新的Windows 7,你将无法前在DirectX控制面板切换到调试运行时。您可以尝试在那里手动设置注册表标志:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Direct3DHKEY_CURRENT_USER\SOFTWARE\Microsoft\Direct3D。但最有可能的是它不会工作(在Windows上更新的是Windows 7),因为DirectX 9不久前不推荐使用,最近一些更新打破了所有旧的东西(甚至是好的PIX)。我听说过另外一个选择:使用Windows的检查版本,但没有尝试过。

祝你好运!

参考文献:

0

关于System32下和SysWOW6 4

的“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

相关问题