2014-09-21 42 views
1

我的產品升級到新的編譯器版本和新技術,但微軟的工作似乎已經對此作了一團糟......獲取VS2013,DirectXMath,XAudio2和D3D11共同努力靶向的Windows 7

  • 的VS2013/WinSDK附帶的XAudio2版本在Windows 7上不起作用,並且沒有編譯標誌來解決這個問題(對於不包含前8值的_WIN32_WINNT,它甚至不包括它,將其設置得更高並且其鏈接庫尋找更新的無論如何,DLL名稱)。
  • 其他現有的DirectX組件(如D3D11)在與Win8 SDK頭文件和導入庫一起使用時看起來很好。 Win7用戶仍然需要安裝d3d11.dll等DirectX SDK版本。
  • 試圖將DirectX June 2010 SDK放入包含路徑(以獲取可運行的XAudio2版本),會導致宏衝突(例如,在dxgitype.h和winerror.h之間。看起來微軟把大量的宏移入了winerror.h,並且在嘗試定義它們之前沒有進行預處理器檢查......
  • DirectXMath頭文件似乎只在Windows8 SDK頭文件中,它們對Windows沒有問題7 _WIN32_WINNT = 0x0601,但這一事實使我要去一箇舊的SDK沒有Winerror.h中廢話...

我想知道如果我可以undefing _WIN32_WINNT破解它包括Win8的XAudio2然後克隆了DirectX SDK版本內聯COM封裝器,但是如果任何XAudio2公共接口實際發生更改(例如結構佈局或新成員),則會使我暴露。

必須有一個正確的方法來做到這一點......如果我可以在Win8系統上使用操作系統提供的DLL而不是舊的DX redist一個在安全的方式(並沒有編譯我的代碼兩次,我真的想要避免單獨的win8 32/64桌面EXE的所有其他),甚至更好。

+0

將傳統DirectX SDK與Wi [MSDN](http://msdn.microsoft.com/zh-cn/library/windows/desktop/ee663275.aspx)涵蓋了VS 2012或VS 2013附帶的ndows 8.x SDK。另請參閱[DirectX SDK(2013版)在哪裏?](http://blogs.msdn.com/b/chuckw/archive/2013/07/01/where-is-the-directx-sdk-2013-edition的.aspx)。 – 2014-09-27 18:36:21

回答

0

好的發現了一個C/C++ include解決方案hack /解決方案出現在初始測試工作。如果任何人有一個妥善的解決辦法編號愛

  1. 一般來說,當人們安裝DirectX SDK,他們的Visual Studio將包含路徑上結了$(DXSDK_DIR),即使它不是默認,但就像我說的,只是把它放在第一個不起作用,所以...
  2. 在項目設置中定義一個預處理器宏,使其等於「$(DXSDK_DIR)Include \ xaudio2.h」。
  3. 包含該宏以獲取DXSDK版本的xaudio2.h,而不管包含路徑。這很有趣,因爲即使使用完整路徑,我也無法讓MSVC提供引用值(它似乎在項目設置中除去引號)。
  4. 現在它抱怨「#包括<comdecl.h>」,顯然這不是在窗口的SDK中,因爲XAudio2使用< >它不會在目錄中拾起。因此,無論如何請將DXSDK_DIR \ Include添加到您的包含路徑中,在Windows SDK之後的
  5. 通過一些奇蹟,無論在comdecl。h與任何東西都沒有衝突(我至少包含了這些東西),並且這個編譯和鏈接乾淨利落,並按照預期在Window 7系統上運行(未在Windows 8上測試過,當然還沒有測試過,如果我可以加載它的XAudio DLL的Win8的版本,用我自己的調用LoadLibrary /等代碼路徑)

包括宏觀

#define INCLUDE_XAUDIO2_EXPAND(path) <path> 
#include INCLUDE_XAUDIO2_EXPAND(INCLUDE_XAUDIO2) 

編輯:這似乎也打破了IDE錯誤檢測和自動完成,這似乎無法進行處理,包括...

+0

問題,你有沒有查看直接課程,由YouTube用戶:ChiliTomatoNoodle?爲什麼不使用實際設計恰當的數學函數,適合您的項目? – NaturalDemon 2014-09-23 00:13:59

+0

我不能說在過去5年多的時間裏,我見過他的東西以及其他1000人發佈視頻教程,所以請正確解釋。在升級這個項目時,我只需要替換D3DX(數學),物理引擎等就可以繼續做自己的事情。 – 2014-09-23 06:38:10

+0

我的[博客](http://blogs.msdn.com/b/chuckw/archive/2012/04/02/xaudio2-and-windows-8-consumer-preview.aspx)解決了此問題。我使用類似的過程通過[DirectX Tool for Audio](http://go.microsoft.com/fwlink/?LinkId=248929)支持低級方案。 – 2014-09-27 18:35:28

相關問題