2011-05-24 79 views
1

如果我建我的應用程序對D3DX June2007_d3dx9_34和目標系統具有版本Nov2007_d3dx9_36應該說是一個問題嗎?是否D3D9應用程序依賴於精確D3DX DLL版本?

我分配使用MS D3DX的DLL」 REDIST,安裝工具,但我注意到一個一個‘乾淨’PC(沒有以前安裝的D3DX)我得到一個錯誤失蹤D3DX的DLL。想弄清楚,如果本身不工作的安裝程序,我想知道,如果可能供應DLL的太新版本的問題之前 - 將應用程式中尋找具有確切名稱的DLL?

回答

1

D3DX庫不向後兼容,以及API可以版本之間切換。因此,目標系統必須具有與構建應用程序相同版本的D3DX - 新版本不起作用。

如果您在申請使用Dependency Walker,它應該告訴你,有與確切的版本號的DLL的依賴。

0

在DirectX SDK可再發行包括D3DX的DLL的全部歷史。安裝最新版本的DirectX可再發行組件應該讓您的系統以這些dll的每個版本結束。這是可能的,允許應用程序只安裝他們通過刪除CAB文件出了可再發行的目錄結構的需要的文件,以減少可再發行組件的尺寸,這是你如何可以與具有DLL的43結束了但不是37例如。

如果刪除D3DX和D3DCOMPILER的dll的依賴關係,從您的應用程序,你可以確保應用程序將工作作爲D3D9 D3D10和D3D11核心的DLL版本無關,也被捆綁到Windows Service Pack版本(即D3D11的Vista來自Vista SP2或Win7股票安裝例如)。

另一種可能的方式來去除依賴,並讓應用程序啓動是使DLL延遲加載模塊,所以需要(如在開發環境中編譯着色器)時,它才加載。只要你確定在最終用戶機器上存在的着色器正確就不會需要編譯着色器,並不會崩潰。調用LoadLibrary和手動調用的功能將與您所選擇的方式更好的錯誤消息的更安全的選擇,但很多工作。

相關問題