2016-07-25 27 views
0

這是一個非常具體的問題, - 我對此表示歉意。升級爲贏10,然後我的Direct3D11項目不會鏈接

我一直在使用Direct3D 11構建一個圖形化的實時應用程序。我在Win7操作系統上啓動了它。然後我升級到Win10,當我試着再次編譯解決方案時,鏈接器就像它已經陷入了硅微芯片的瘟疫一樣。

它在甚至不使用給定函數的對象中發出未解決的符號。

  • __imp__wassert
  • strlen的
  • 晶圓廠
  • __imp__CrtDbgReportW
  • SPRT

我已經得出結論,大部分有問題的功能主要是C函數。我知道C函數不再包含在C++頭文件和庫中,因此我確保明確包含所有相關的C庫。

我已閱讀並遵循一些大多數其他人遇到的問題與Windows 10擰他們的代碼的解決方案。其中之一是這樣的:Upgraded to Windows 10 and now WAMP won't work

我也試過實際上告訴鏈接器在哪裏尋找-lib文件,以防編譯器或項目錯過了備忘錄。

在我的電腦,爲的Direct3D庫的位置是在這裏:C:\ Program Files文件(x86)的\的Windows套件\ 10 \ LIB \ 10.0.10586.0 \恩\ arm64

正如你所看到的,我我試圖強制它使用Win10 lib版本以防萬一這是一項要求。

我在一端開始嘗試和發現自己在做一些愚蠢的事:

  • 我找了整整包括路徑看它這個已經開始的雪崩:失敗
  • 我試圖刪除/ ZI編譯器選項:失敗
  • 在當時重新鏈接的DirectX庫的所有不同版本的一個:失敗
  • 明確列入vcrumtime.lib到其他連接庫:SUCCESS(除去一半的錯誤)
  • 創建一個全新的項目,包括一切從頭開始:失敗
  • 添加MSVCRTD.LIB:失敗
  • 更改目標平臺以64:失敗
  • 嘗試,包括在某些獨立的工具類stdio.h中:失敗
  • 嘗試包括WINMM.LIB在連接:失敗

我漫遊什麼感覺就像一個十年(僅一個月IRL)在網上找了一些解決方案,但沒有。

我希望你們中的一些人知道我可能會做出什麼不好的事情。

所有建議都會有所幫助。

+0

具體問題_great_!可悲的是,這其實並不是其中之一。 [MCVE]的時間... –

+0

'__imp__wassert'你正在編譯Unicode嗎? '__imp__CrtDbgReportW'這是一個'_DEBUG'構建? 'um \ arm64'是你的目標平臺ARM64嗎? 'include the vcrumtime.lib'你是否靜態或動態鏈接CRT('/ MT [d]'或'/ MD [d]')? 「我已經閱讀並遵循了大多數有問題的其他人的解決方案。」老實說,我認爲你隨意地嘗試隨機事情使情況變得更糟。更好地嘗試回滾*所有*您的嘗試「修復」,然後發佈*原始*問題是什麼 - 具有完整的細節。 – dxiv

回答

1

很有可能您正在使用與VS 2015不兼容的靜態庫進行鏈接,因爲它使用的是Universal CRT。例如,使用VS 2015時,傳統的DirectX SDK庫DXERR.LIB無法鏈接。請確保使用VS 2015重建所有代碼,並避免使用針對其他版本的Visual C++構建的靜態庫。

您也無法將您的項目鏈接到與64位ARM庫連接的x86或x64 PC上並運行。

雖然您當然可以,但您無需爲Windows 32桌面應用程序使用Windows 10 SDK。

+0

非常感謝!當談到芯片上的指令集和地平面架構時,你可以告訴我是一個完全新手。我再次將所有文件導入到一個新的Win32 Windows項目中,並解決了我的大部分問題。然後我重新調整項目以符合我的要求,但最終,您的回答非常幫助我! 問題的一部分是我試圖告訴鏈接器在哪裏找到這些庫。我刪除了這個(把它設置爲繼承..)和VS做了其餘的。 – Silverback

相關問題