スキップしてメイン コンテンツへ

 none
Visual Studioの構成マネージャのプラットフォームについて RRS feed

  • 質問

  • これまでVisual Studioで32ビットと64ビットのDLL(Visual C++)をビルドする際、あまりよく考えずに、構成マネージャのプラットフォームにそれぞれ「Win32」、「x64」を指定していました。

    単純に32ビットと64ビットの対比と考えると、「Win32」と「x64」より「x86」と[x64」のほうが適切な気がしますが、そうでないのは何か意味があるのでしょうか。

    宜しくお願いします。

    2019年5月20日 7:37

回答



  • Win32という表現は、CPUの種類というよりもサポートしているAPIの実装の種類の意味ですね。
    APIは呼び出す関数の定義なのでCPUの種類には依存しません。

    Windowsの歴史的にはWin16があって、そのあとにWin32になりました。
    Win16を拡張した16bit環境で動かすWin32sなんてのもありましたし。
    WindowsCEなどはARM,MIPS,SuperHといったx86以外のアーキテクチャのCPUでもWin32を使えました。

    64bitCPUはAMD64(x64)よりも先にx64と互換性のないIA64があります。
    WindowsServerにはARM64用もあります。
    CPUは互換性はないけどAPIとしては共通にできます。

    とはいえ,Windows以外もビルドできるようになってきているので、x64だとx64アーキテクチャのWindows 64bitとlinux 64bitの区別がつかないですよね。
    ですからWindows向けであれば、あえて変更するとしたらWin16,Win32,Win64の方へじゃないかな。

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク cdefg 2019年5月21日 0:01
    • 編集済み gekkaMVP 2019年5月21日 5:16 変なHTMLがくっつく
    2019年5月20日 9:59

すべての返信



  • Win32という表現は、CPUの種類というよりもサポートしているAPIの実装の種類の意味ですね。
    APIは呼び出す関数の定義なのでCPUの種類には依存しません。

    Windowsの歴史的にはWin16があって、そのあとにWin32になりました。
    Win16を拡張した16bit環境で動かすWin32sなんてのもありましたし。
    WindowsCEなどはARM,MIPS,SuperHといったx86以外のアーキテクチャのCPUでもWin32を使えました。

    64bitCPUはAMD64(x64)よりも先にx64と互換性のないIA64があります。
    WindowsServerにはARM64用もあります。
    CPUは互換性はないけどAPIとしては共通にできます。

    とはいえ,Windows以外もビルドできるようになってきているので、x64だとx64アーキテクチャのWindows 64bitとlinux 64bitの区別がつかないですよね。
    ですからWindows向けであれば、あえて変更するとしたらWin16,Win32,Win64の方へじゃないかな。

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク cdefg 2019年5月21日 0:01
    • 編集済み gekkaMVP 2019年5月21日 5:16 変なHTMLがくっつく
    2019年5月20日 9:59
  • 歴史的な慣習ということで納得しました。

    ありがとうございました。

    • 回答としてマーク cdefg 2019年5月21日 0:01
    • 回答としてマークされていない cdefg 2019年5月21日 0:01
    2019年5月21日 0:01