Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 如何使我的应用程序加载正确的d3d9*dll_Visual Studio_Dll_Directx_Directx 9 - Fatal编程技术网

Visual studio 如何使我的应用程序加载正确的d3d9*dll

Visual studio 如何使我的应用程序加载正确的d3d9*dll,visual-studio,dll,directx,directx-9,Visual Studio,Dll,Directx,Directx 9,我已经安装了2010年6月的Direct X SDK,并编写了一个简单的DX应用程序 我已经设置了正确的头include和库include路径,即它们指向 C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86 一切都很好,但是当我运行应用程序时,我注意到正在加载的d3d*模块是C:\Wind

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

我已经设置了正确的头include和库include路径,即它们指向

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目录中的LIB链接将确保SDK中的DLL,即
C:\Program Files(x86)\Microsoft DirectX SDK(2010年6月)\Developer Runtime\x86
将被加载

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

  • DXSDK\u DIR=C:\Program Files(x86)\Microsoft DirectX SDK(2010年6月)
    添加到环境中
  • %DXSDK\u DIR%\Developer Runtime\x86“
    %DXSDK\u DIR%\Developer Runtime\x64”
    添加到系统
    路径
    变量中
  • 使用DirectX控制面板(
    %DXSDK\u DIR%\Utilities\bin\x86\dxcpl.exe
    %DXSDK\u DIR%\Utilities\bin\x64\dxcpl.exe
    )启用调试运行时
  • #在DirectX包含之前,在代码中定义D3D_调试_信息
  • 如果您使用的是比Windows 7更新的Windows,则无法在DirectX控制面板中切换到调试运行时。您可以尝试在以下位置手动设置注册表标志:
    HKEY\u LOCAL\u MACHINE\SOFTWARE\Microsoft\Direct3D
    HKEY\u CURRENT\u USER\SOFTWARE\Microsoft\Direct3D
    。但它很可能无法工作(在比Windows 7更新的Windows上),因为DirectX 9不久前就被弃用了,最近一些更新打破了所有旧东西(甚至是好的ol'PIX)。我听说还有一个选择:使用检查过的Windows版本,但没有尝试过
  • 祝你好运

    参考资料:


    关于System32和SysWOW64

    System32文件夹用于64位文件,“SysWOW64”文件夹用于32位文件

    这听起来很混乱,尤其是对于文件夹名称,这是由于向后的可比性。详情请阅读

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

    我不确定这是否与此有关,但我的应用程序最终结束了 获取空设备句柄

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

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

    我不认为你需要自己去做,在大多数情况下,系统会为你处理这些,如果你真的想自己去做,看看

    有关职位


    NULL
    设备错误可能与所使用的运行时完全无关。如果您无法成功启用调试运行时,并且自己无法调试,请在StackOverflow上发布另一个问题,包括相关代码以及您试图解决的问题,以便我们了解问题所在。