EXE と DLL との関係 (プロセスの相互運用性)

32 ビット / 64 ビット という用語が目立っています。 これはどういうことなのでしょうか。

64 ビット バージョンの Windows での 32 ビット プログラムの互換性に関する考慮事項の概要 - Windows Server | Microsoft Learn

64 ビット バージョンの Windows では、Microsoft Windows-32-on-Windows-64 (WOW64) サブシステムを使用して、変更なしで 32 ビット プログラムを実行します。 64 ビット バージョンの Windows では、16 ビット バイナリまたは 32 ビット ドライバーはサポートされていません。 16 ビット バイナリまたは 32 ビット ドライバーに依存するプログラムは、プログラムの製造元がプログラムの更新プログラムを提供しない限り、64 ビット バージョンの Windows では実行できません。

64 ビットの考慮事項 - Win32 apps | Microsoft Learn

64 ビット Windows の可用性が高まる中、ユーザーは、さまざまな言語の国際キーボードや東アジア言語の入力メソッド エディター (IME) などの入力メソッドが、32 ビットと 64 ビットの両方のアプリケーションで適切に動作することを期待しています。 Microsoft Windows 用の入力メソッド コンポーネントまたはテキスト サービスを開発する場合は、製品のターゲット プラットフォームとして 64 ビット Windows を検討することが重要です。

通常、IME とテキスト サービス (Text Services Framework に基づく) はダイナミック リンク ライブラリ (DLL) として実装されるため、DLL は 32 ビット環境または 64 ビット環境で使用するために特別に構築されていることに注意してください。32 ビット環境で使用するために構築された DLL は、64 ビット アプリケーションでは使用できません。その逆も同様です。

まとめ

ビット数や、プラットフォームが異なるものは混同できません

  • 32 ビット (x86) の EXE / DLL は、これらの組み合わせでのみ動作します

  • 64 ビット (x64) の EXE / DLL は、これらの組み合わせでのみ動作します

  • 64 ビット (Arm64) の EXE / DLL は、これらの組み合わせでのみ動作します

Arm 版 Windows 11

Arm 版 Windows 11 では 2 種類 (x64, Arm64) の 64 ビットアプリをサポートしています。この場合は、どのようになりますか。

  • x64 アプリを起動した場合は x64 バイナリー (EXE, DLL) のみロードできます

  • Arm64 アプリを起動した場合は Arm64 バイナリー (EXE, DLL) のみロードできます

留意点として Arm64 & x64 両方の特徴を併せ持った Arm64X バイナリー (EXE, DLL) が存在します。