我正在使用Windows 7,Visual Studio 2012和DirectX 11.今天,我已經將DirectXTex中的「DDSTextureLoader」模塊添加到了我的項目中(我剛剛將DDSTextureLoader.cpp和DDSTextureLoader.h複製到了我的項目文件夾中並添加了它們進入解決方案)。該項目編譯正常,但當我遇到它,它給我以下錯誤:SDK/OS版本不正確?
Entry point in method CreateFile2 can't be found in library DLL KERNEL32.dll
(或某事像,我有Windows的波蘭語版本,所以我不知道有關此錯誤消息的英文對應。)
我發現它有事情做與SDK版本,它可以通過改變#define _WIN32_WINNT
的價值_WIN32_WINNT_WIN7
(默認爲_WIN32_WINNT_WIN8
)在C:\Program Files (x86)\Windows Kits\8.0\Include\shared\sdkddkver.h
「固定」。
這樣做後,該項目似乎工作正常,但我不認爲手動編輯SDK的文件,特別是因爲它也用於所有其他項目,是一個很好的解決方案。有沒有更好的方法來擺脫上述錯誤信息?或者,也許我的項目/ SDK設置有一些錯誤?
你應該做的'在自己的項目#define',*前*你有'sdkdkver.h' - 常(取決於您是如何創建的項目)有一些樣板代碼'targetver .h'你可以改變。 –
CreateFile2()是一個Windows 8函數,旨在供WinRT應用程序(Store和Phone)使用。它僅在_WIN32_WINNT> = 0x0602的情況下定義,並且SDK確信您實際上正在創建Store應用程序。您完全不留下面包屑以瞭解這種情況,DDSTextureLoader.cpp肯定有CreateFile2()調用。 –
@HansPassant多年來,我安裝了多個DirectX/Windows SDK,我現在甚至都不確定。我不知道爲什麼我在那裏定義了0x0602以及我犯了一個錯誤的方式。這就是我問的原因。對不起,我不能提供更多細節。但如果你問我關於我的設置的問題,我很樂意回答。 – NPS