# 除錯

本節提供與應用程式無法啟動、視訊渲染緩慢相關之問題，以及視訊播放效能問題的詳細資訊和解決方案。

## 應用程式無法啟動或在啟動時發生錯誤

### DLL 遺失錯誤

- 問題：DLL 遺失錯誤（例如 `MSVCP140.dll is missing` 或 `VCRUNTIME140.dll not found`）。
- 詳細資訊：此類錯誤表示應用程式找不到執行時需要的執行階段函式庫。通常是在系統未安裝 Microsoft Visual C++ 可轉散發套件的情況下發生。缺少此類函式庫，應用程式將無法啟動或在啟動過程中崩潰。
- 解決方案：安裝適用於 x64、x86 和 Arm64 的可轉散發 C++。此套件包含應用程式正常運作需要的 DLL 檔案。

* * *

### MSVC 建置失敗

- 問題：MSVC 建置失敗： `MSBuild error MSB8020: The build tools for ARM64EC (Platform Toolset = 'v143') can't be found`
- 詳細資訊：若未安裝「Desktop Development with C++ workload」，開發者可能會在編譯過程中發生一些問題，例如：

> 
> 
> - 建置失敗 — 例如 `MSBuild error MSB8020: The build tools for ARM64EC (Platform Toolset = 'v143') can't be found`。此錯誤表示無法取得必要的工具集。
>     - 編譯錯誤 — 例如 `fatal error C1083: Can't open include file: 'iostream': No such file or directory`。此錯誤是因為未安裝標準 C++ 函式庫而發生。
>     - 執行階段錯誤 — 應用程式可能會因為缺少相依性或組態不正確而無法運作。
- 解決方案：安裝 Visual Studio 2022（v17.4 以後版本），並確保已安裝需要的工作負載，例如「Desktop Development with C++」。此安裝提供開發與建構 Arm64EC 應用程式需要的工具和組態。

* * *

### 位址不一致、連結器錯誤和執行階段錯誤

- 問題：跨不同 DLL 匯出的函式位址不一致，導致應用程式啟動在執行階段崩潰。
- 詳細資訊：如果針對 Arm64EC 進行建構時，匯出的函式未標示出 `__declspec(hybrid_patchable)` ，開發者可能會在編譯過程中和執行階段發生問題，例如：

> 
> 
> - 位址不一致 — 函式指標位址可能會因模組而異，導致不可靠的行為。
>     - 連結器錯誤 — 從 DLL 匯入之函式的位址可能不一致，而發生 `LNK2019: unresolved external symbol` 或 `LNK2001: unresolved external symbol` 等錯誤。
>     - 執行階段錯誤 — 應用程式可能無法找出正確的函式位址，導致執行階段錯誤和崩潰。
- 解決方案：針對 Arm64EC 進行建構時，確保已正確標示匯出的函式。例如，針對需要特殊處理的函式使用 `__declspec(hybrid_patchable)`。

* * *

### fatal error C1083

- 問題：建置錯誤：在編譯Arm64EC時，出現 `fatal error C1083: Can't open include file: 'arm_neon.h': No such file or directory`。
- 詳細資訊：若未正確設定環境變數 `CFLAGS` 和 `CXXFLAGS`，開發者可能會在編譯過程中發生一些問題，例如：

> 
> 
> - 編譯器旗標不正確 — 編譯器可能會使用預設或不正確的旗標，而導致建置失敗。
>     - 建置失敗 — 可能會因為未包含 ARM 專屬標頭而發生錯誤，例如 `fatal error C1083: Can't open include file: 'arm_neon.h': No such file or directory`。
- 解決方案：確保已在 CMakePresets 組態中正確設定環境變數。比如：

> 
> 
> set CXXFLAGS=arm64EC
>         set CFLAGS=arm64EC
>         Copy to clipboard

* * *

### MSVC 連結器錯誤

- 問題：MSVC 連結器錯誤： `LINK : fatal error LNK1112: module machine type 'ARM64EC' conflicts with target machine type 'x64'`
- 詳細資訊：如果開發者使用錯誤的命令提示字元，則可能會在編譯過程中發生一些問題，例如：

> 
> 
> - 建置失敗 — 可能會因為未正確設定環境而發生錯誤，例如 `cl.exe isn't recognized as an internal or external command, operable program or batch file`。
>     - 連結器錯誤 — 可能會因為針對 Arm64EC 編譯的物件檔案與 x64 連結器設定不相容而發生錯誤，例如 `LINK : fatal error LNK1112: module machine type 'ARM64EC' conflicts with target machine type 'x64'`。
- 解決方案：使用 Arm64 開發者命令提示字元編譯和連結 Arm64EC 的原始檔案。使用對應的開關，執行 `cl` 和 `link` 命令：

> 
> 
> cl /arm64EC /c <args>
>         link /MACHINE:ARM64EC <args>
>         Copy to clipboard

* * *

### x64 cl.exe 複雜問題錯誤

- 問題：因為使用 x64 cl.exe做為 Arm64EC 程式碼庫，而導致 MSVC 編譯錯誤
- 詳細資訊：如果開發者使用 x64 cl.exe 進行 Arm64EC 編譯，可能會發生一些錯誤，例如：

> 
> 
> - `cl.exe isn't recognized as an internal or external command, operable program or batch file.`
>     - > 
> > 
> > - 說明 — 因為 x64 環境無法辨識專屬於 Arm64EC 環境的 /arm64EC 旗標，而發生錯誤。
> 
> 
> 
> 
> - `LINK : fatal error LNK1104: can't open file 'MSCOREE.lib'`
>     - - 說明 — 此錯誤表示連結器找不到需要的函式庫。x64 環境未設定此類函式庫的路徑。
> 
> - `fatal error C1083: Can't open include file: 'arm_neon.h': No such file or directory`
>     - - 說明 — 因為 x64 環境未包含 Arm64EC 編譯需要的 ARM 專屬標頭，而發生此錯誤。
- 解決方案：執行命令 `C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat arm64`。

* * *

### 編譯錯誤 C1189

- 問題：編譯錯誤：  `C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\include\emmintrin.h(24,1): error C1189: #error: this header should only be included through <intrin.h>`
- 詳細資訊：此類標頭專屬於 x86 和 x64 架構，包含與 Arm64EC 不相容的單指令多資料 (SIMD) 內建函式。如果使用這些標頭，則開發者可能會在 Arm64EC 編譯過程中發生一些問題，例如：

    - 編譯錯誤 — 可能會因為標頭不適用於 Arm64EC 而發生錯誤，例如 `C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\include\emmintrin.h(24,1): error C1189: #error: this header should only be included through <intrin.h>`。
    - 執行階段錯誤 — 應用程式可能會因為缺少 SIMD 指令或指令不相容，而無法正常運作。
- 解決方案：將 `emmintrin.h, smmintrin.h, xmmintrin.h,` 和 `tmmintrin.h` 的所有執行個體替換為 `intrin.h`。`intrin.h` 標頭針對與 Arm64EC 相容之內建函式提供統一的介面。

    MSVC 已提供了 `intrin.h` 標頭檔案，無須另外下載。其隨附於 Microsoft C/C++ 編譯器中，可以在 `C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\<version>\include\intrin.h` 中找到。將 &lt;version&gt; 替換為系統上安裝的 MSVC 工具版本號。

* * *

### 圖形應用程式啟動問題

- 問題：與 OpenCL 和 OpenGL 相有的圖形應用程式啟動問題。
- 詳細資訊：若未安裝 OpenCL 和 OpenGL 相容性套件，則開發者可能會在應用程式啟動過程中發生一些問題，例如：

> 
> 
> - 啟動失敗 — 圖形應用程式可能無法啟動或在啟動過程中崩潰。

- 解決方案：從 [Microsoft Store](https://apps.microsoft.com/detail/9NQPSL29BFFF?hl=en-us&amp;gl=US&amp;ocid=pdpshare) 下載 OpenCL 和 OpenGL 相容性套件。此套件提供必要的相容性層，確保圖形應用程式在 WoS 裝置上順利運作。

* * *

### AVX 指令集

- 問題：無法啟動需要 AVX 指令集支援的應用程式
- 詳細資訊：某些應用程式需要進階向量擴充 (AVX) 指令集支援，如果未獲得支援，則開發者可能會發生一些問題，例如：

> 
> 
> - 應用程式崩潰 — 應用程式可能會因為缺少 AVX 指令，而在執行過程中崩潰。
>     - 錯誤行為 — 應用程式可能會出現非預期行為或無法執行某些仰賴 AVX 指令的任務。
- 解決方案：切換至 Windows Canary 版本。Canary 組建支援 AVX 指令的子集，因此包含支援某些 AVX 指令，但是非全部。此提供了可能的解決方案，雖然可能無法保證完整的功能性。其為解決 AVX 相關問題的可行選項。

* * *

## 視訊匯出和渲染操作緩慢

- 問題：如果是與視訊匯出和視訊渲染有關的圖形應用程式，則匯出或渲染操作可能會很慢。
- 解決方案：將筆記型電腦切換至效能模式，以提高速度。請依據以下步驟完成此操作：

> 
> 
> 1. 從開始功能表捷徑或同時按下「Windows」和「I」，進入「設定」。
>     2. 點擊「系統」，然後選擇「電源和電池」。
>     3. 找出「電源模式」選項，點擊下拉式選單。將模式設為「最佳效能」。

* * *

## 在視訊串流應用程式中啟用硬體加速

- 問題：視訊串流應用程式中的視訊播放效能問題。
- 解決方案：檢查應用程式設定。大多數視訊串流應用程式都具有設定選單，您可以在其中啟用或停用硬體加速。尋找與視訊播放、效能或進階設定有關的選項。啟用硬體加速，可以將任務卸載至 GPU，以提高視訊播放效能、降低 CPU 使用率及提供更流暢的觀看體驗。

Last Published: Dec 16, 2025

[Previous Topic
參考資料](https://docs.qualcomm.com/bundle/publicresource/80-62010-1TC/topics/references.md) [Next Topic
AI 應用程式開發](https://docs.qualcomm.com/bundle/publicresource/80-62010-1TC/topics/ai-app-development.md)