2014-03-05 99 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

相關問題