遇到 DLL x64 與 x86 問題時,應以程序的位元版本為準,而不只是 Windows 的位元版本:64 位元程序需要 x64 DLL,32 位元程序需要 x86 DLL。64 位元 Windows 可執行兩種應用程式,但程序無法載入不同位元版本的 DLL。請先檢查程式架構,再選擇合適作法:單一程式可使用官方安裝程式,系統性故障可使用 DISM 和 SFC,若原因不明則可用 Fionn DLL Fixer 進行診斷。以下提供四種方法。

方法快速比較

方法 最適合的情況 效果 使用者操作量
檢查架構 需要選擇 x86 或 x64 DLL 診斷效果高 低
DISM 和 SFC 多個程式回報系統 DLL 問題 對系統元件效果高 中
官方重新安裝 只有一個應用程式無法啟動 高 中
Fionn DLL Fixer 原因不明,需要檢查相依性 視偵測到的問題而定 低

方法 1:判斷應用程式與 DLL 的位元版本

何時使用: 在安裝或更換元件前,尤其錯誤提到 x86、x64、不相容模組或 Bad Image 時。

  1. 按下 Ctrl + Shift + Esc 開啟工作管理員。
  2. 前往「詳細資料」索引標籤,找到目標程式的程序。
  3. 以滑鼠右鍵按一下欄位標題,選擇「選取欄位」,並啟用「平台」或「架構」;若您的 Windows 版本提供這些欄位。
  4. 核對顯示結果:32 位元程序應選擇 x86 DLL,64 位元程序應選擇 x64 DLL。
  5. 開啟「設定」→「系統」→「關於」,查看「系統類型」,作為相容性的補充確認。
    Windows 設定中的系統相關資訊頁面

確認結果: 所選 DLL 的位元版本須與程序位元版本相符。Windows 的系統類型不能取代這項檢查。

x86 與 x64 DLL 不相容的表現

架構不相符通常會在啟動時立即出現:應用程式未顯示視窗便關閉、顯示 DLL 不相容或 Bad Image 訊息,或傳回 0xc000007b 代碼。這些徵兆本身無法證明原因,因為損毀的相依元件也可能導致此代碼。請先記錄錯誤文字和檔案名稱,再檢查程序位元版本,並從官方來源修復元件。

System32 與 SysWOW64:x64 和 x86 DLL 位於何處

在 64 位元 Windows 中,資料夾名稱的安排很反直覺: C:\Windows\System32 主要包含 64 位元系統元件,而 C:\Windows\SysWOW64 則服務於 32 位元 WOW64 環境。WOW64 會對 32 位元程序套用檔案系統重新導向,因此程式存取的路徑可能與使用者預期不同。

方法 2:修復 Windows 系統元件

何時使用: 錯誤在 Windows 當機或更新後出現,或多個程式都顯示類似訊息時。

  1. 透過「開始」功能表開啟「終端機(系統管理員)」。
  2. 執行命令 DISM /Online /Cleanup-Image /RestoreHealth 。 在終端機中執行 DISM RestoreHealth 命令
  3. 完成後執行 sfc /scannow 。
  4. 重新啟動電腦。
  5. 啟動有問題的應用程式,檢查原始錯誤是否消失。

根據 Microsoft 的系統檔案修復說明 ,DISM 會修復 Windows 映像,而 SFC 會檢查受保護的系統檔案。此方法不能取代重新安裝隨個別程式提供的 DLL。

方法 3:從官方來源重新安裝元件

何時使用: 只有一款遊戲或程式發生問題,而其他應用程式運作正常時。

  1. 關閉有問題的應用程式。
  2. 前往開發人員的官方下載頁面或支援區。
  3. 下載程式安裝程式,或開發人員為該程式指定的元件。
  4. 若安裝程式提供架構選項,32 位元程序請選擇 x86,64 位元程序請選擇 x64。
  5. 完成安裝後,再次啟動應用程式。
    Windows 的程式和功能頁面

確認結果: 應用程式可正常開啟且不再顯示原始訊息。官方安裝程式會將相關檔案與版本放在預期位置;請勿使用來源不明的獨立 DLL。

方法 4:使用 Fionn DLL Fixer 診斷與修復問題

何時使用: 原因不明,需要檢查 DLL、系統元件與啟動相依性時。Fionn DLL Fixer 會執行掃描、修復與再次檢查;它可偵測遺失、損毀、版本不符,以及與 System32 相關的 DLL 問題。

  1. 啟動 Fionn DLL Fixer。程式會自動掃描電腦中的 DLL 與系統問題,並在掃描完成後顯示結果。 啟動 Fionn DLL Fixer
  2. 掃描完成後,按一下「修復」,自動開始修復所有偵測到的 DLL 與系統問題。 掃描完成後,按一下修復以自動處理所有偵測到的 DLL 與系統問題
  3. 等待修復完成。修復過程中,按鈕會顯示為「修復中」,直到所有問題處理完畢。 等待修復程序進行中
  4. 完成後,在確認對話方塊中按一下「確定」。若出現提示,請在檢查結果前重新啟動電腦。 修復完成後,在確認對話方塊中按一下確定
  5. 若重新啟動後問題仍存在,按一下「重新檢查」再次掃描。若發現新問題,再按一下「修復」。 若重新啟動後問題仍存在,按一下重新檢查以再次掃描

確認結果: 再次開啟原始程式。若錯誤持續存在,請保留錯誤文字、DLL 名稱及程序位元版本,提供給開發人員的技術支援。

如何避免 x86 與 x64 錯誤

  • 讓 DLL 與程式程序相符,而不只看 Windows 的位元版本。
  • 不要將沒有 *32 標記當作判斷架構的唯一方法。
  • 單一程式故障時,先使用它的官方安裝程式。
  • 多個程式發生錯誤時,使用 DISM 和 SFC 檢查系統元件。

結論

先判斷程序位元版本,便能決定要選擇 x86 還是 x64 DLL。若只有一個程式發生故障,請從官方網站重新安裝其元件;若問題影響多個應用程式,請使用 DISM 和 SFC 修復 Windows 系統檔案。請記住,System32 主要包含 64 位元元件,而 SysWOW64 用於 32 位元環境,但不要在這些資料夾之間手動複製檔案。若無法確認錯誤來源, Fionn DLL Fixer 可協助進行掃描、修復與再次檢查。程式不再出現原有錯誤並能正常啟動,即表示問題已獲得確認。

常見問題

可以在 x64 Windows 上使用 x86 DLL 嗎?

可以,只要該 DLL 是由 32 位元應用程式載入。64 位元程序無法載入 x86 DLL。

為什麼 x64 DLL 無法在 32 位元程式中運作?

32 位元程序無法載入 64 位元 DLL。請安裝程式製造商提供的 x86 版本。

為什麼 System32 包含 x64 DLL?

這是 Windows 的歷史命名慣例。在 64 位元系統上,System32 主要用於 64 位元系統元件,而 SysWOW64 用於 32 位元 WOW64 環境。

錯誤 0xc000007b 是否一定表示 DLL 位元版本不相符?

不一定。架構不相容是可能原因之一;相依元件損毀或遺失時也可能出現此代碼。請檢查位元版本並修復官方元件。

何時應使用 DISM 和 SFC?

當 Windows 系統檔案可能已損毀,或錯誤影響多個程式時使用。若 DLL 隨單一程式提供,請先使用該程式的官方安裝程式。