none
Windows8.1で利用可能なライブラリについて RRS feed

  • 質問

  • Visual Studio 2010を使用してMFCアプリケーションを作成しています。

    以下のライブラリを静的リンクして使用しているのですが、これらのライブラリはWindows8.1でも使用可能でしょうか。

    また、使用可能であれば、Microsoftにより動作保証することが明記された資料の場所も教えてください。

    • C/C++ランタイムライブラリ
    • MFCのライブラリ
    • winmm.lib(C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib配下)

    よろしくお願い致します。

    2014年9月16日 8:14

回答

すべての返信

  • 人に聞く前に自分で試したほうが早いと思いますが。
    デスクトップアプリであればこれまでどおり互換性は確保されているので、ARMデバイスとかでなくx86/x64であればいずれのライブラリも普通に使えます。むしろそうであってくれないと困ります。
    新しいコンパイラを使って作成したアプリが古いWindowsで動作しない、というのはよくあります(リリースノートを見れば分かります)が、古いコンパイラで作成したアプリが新しいWindowsで動作しないというのは稀です(Win16アプリを64bit版Windowsで動かすことはできない、などの例外を除く)。ストアアプリではMFCもマルチメディアライブラリも使えないのですが、開発環境がVS 2010ということはデスクトップアプリを普通に動かしたいってことですよね?
    • 編集済み sygh 2014年9月16日 9:44
    2014年9月16日 9:37
  • 補足で、

    C/C++ランタイムライブラリとMFCのライブラリについては保証するドキュメントはよくわかりません。

    winmm.libはそもそも静的リンクできません(静的ライブラリが提供されていません)。ですが、ここに含まれる個々のライブラリ関数に関しては例えばwaveOutOpenなど個別のページが用意され、動作環境も明示されています。このページが更新されている限りは例えばWindows 2000以降で利用可能と判断できます。

    • 回答の候補に設定 佐祐理 2014年10月7日 7:36
    2014年9月16日 10:34
  • 問われている動作保証とは、どれのことでしょうか?

    EULA に付随する品質保証規定のことを指されていますか?
    そうだとすると、ソフトウェアに含まれた資料に記載のある範囲であるため、ソフトウェア内に記載がないのであればその対象ではありません。

    ランタイムライブラリ、クラスライブラリ、スタティックリンクライブラリなどに対して、動作の保証はそもそもないはずです。
    不具合があれば修正してもらえることがありますが、その不具合によって発生した損失などは補償されるわけでもなく、修正の保証があるわけでもありません。
    これは Windows 8.1 に限った話でなく、Windows 7 などの従来からある Windows に対しても同様です。
    従って、ランタイムライブラリなどを含めた、あなた方が作られたソフトウェアの保証はそのソフトウェアの開発者である、あなた方の範囲となります。
    (EULA では「本ソフトウェアに直接支払った金額を上限とする直接の損害」まで責任範囲を限定しているので、あなた方のソフトウェアによって被る損害がそれを超える場合、実質的に保証がないとみなせるでしょう)

    動くか動かないかでいえば、動くと思います。
    しかし、その保証が明示的にされているわけではないということはご理解いただいた方がよいでしょう。
    (自分たちのソフトウェアの使用許諾契約の責任範囲に気をつけた方がよいと言うことかもしれません)

    2014年9月16日 13:30
    モデレータ
  • 佐祐理さん、Azuleanさんのご指摘に加えての補足ですが、CRT/MFCに関しては下記のエンドユーザー向け再配布可能ランタイムの「システム要件」がスタティックライブラリにも当てはまるのではないでしょうか。

    Download Microsoft Visual C++ 2010 SP1 再頒布可能パッケージ (x86) from Official Microsoft Download Center

    Download Microsoft Visual C++ 2010 SP1 再頒布可能パッケージ (x64) from Official Microsoft Download Center

    「サポートされるオペレーティング システム」にはWindows 8/8.1やServer 2012/2012 R2に関する記載はありませんが、ある意味仕方ないことだと思います。もちろん「サポートされる~」の一覧に含まれていたとしても、これはランタイムライブラリが正しく使用された場合における最低限の保証でしかないので、個々のアプリケーションが対象プラットフォームで意図通りに動作するかどうかを最終的に確認するのは開発者の責任だと思います。

    Windows 8がリリースされたとき、GDIの縦書きが正しく動作しなくなっている(破壊的仕様変更が行われている)ことが話題になったことがありますが、アプリケーション側が新しいWindowsでも意図したとおりに動作するように対応するか、それともWindows側がサービスパックや次のバージョンで不具合の修正や破壊的仕様変更の撤回を実施してくれるのを待つか、結局はアプリの開発者が実際にその環境でテストしてから(アプリユーザーの意見や要望も聞いたうえで)決めることだと思います。

    • 編集済み sygh 2014年9月16日 14:41
    2014年9月16日 14:24
  • それらのページにもWin 8.1が明記されていないことが質問の出発点だと思います。

    またGDIの縦書きに関しては、プレビュー版の時点で誰も自分のソフトウェアを確認せずバグ報告しなかったためにリリースされるまで発覚しなかったのではと思います。例えば、今ですとWin 9についてバグ報告を受け付けていて、それについては無償で対応してもらえるはずですし。

    2014年9月16日 15:06
  • C/C++ランタイムライブラリ、MFCのライブラリについてもどこかに記述があったよなぁと思い出して見つけました。

    Visual C++ ランタイムのバージョンとサポートされる OS についてにてまとめられていて、Windows 8.1をサポートしているそうです。

    • 回答としてマーク _let_ 2014年10月7日 7:05
    2014年9月17日 1:01
  • 人に聞く前に自分で試したほうが早いと思いますが。
    デスクトップアプリであればこれまでどおり互換性は確保されているので、ARMデバイスとかでなくx86/x64であればいずれのライブラリも普通に使えます。むしろそうであってくれないと困ります。
    新しいコンパイラを使って作成したアプリが古いWindowsで動作しない、というのはよくあります(リリースノートを見れば分かります)が、古いコンパイラで作成したアプリが新しいWindowsで動作しないというのは稀です(Win16アプリを64bit版Windowsで動かすことはできない、などの例外を除く)。ストアアプリではMFCもマルチメディアライブラリも使えないのですが、開発環境がVS 2010ということはデスクトップアプリを普通に動かしたいってことですよね?

    はい、デスクトップアプリの開発を行っています。

    実動作の確認も行っていて今のところ問題は起きていませんが、動けば良いというだけでなく裏付けも欲しいと考えています。

    2014年9月17日 2:36
  • (Win16アプリを64bit版Windowsで動かすことはできない、などの例外を除く)

    ご参考:
     64ビット版 Windows では、Windows XP の頃から16ビット アプリを動かすことはできませんが、32ビット版 Windows でも Windows 8 (8.1 だったかもしれない)からは、16ビット アプリは動作対象外となっています。聞いた話では、wow32.dll とか言うものがあったのだけれども、Windows 8(or 8.1) から提供されていないとか。


    動けば良いというだけでなく裏付けも欲しいと考えています。

     それは、テストによって裏付けるのではないでしょうか。また、佐祐理さんが紹介してくださっているブログに書かれていますが、マイクロソフトのポリシーとして、「最新のサービスパック、セキュリティ更新プログラムが適用されていること」というのがあったと思います。静的にリンクすると、この条件から外れます。その辺は、どのようにお考えでしょうか。


    Jitta@わんくま同盟

    2014年9月20日 1:19
  • また、佐祐理さんが紹介してくださっているブログに書かれていますが、マイクロソフトのポリシーとして、「最新のサービスパック、セキュリティ更新プログラムが適用されていること」というのがあったと思います。静的にリンクすると、この条件から外れます。その辺は、どのようにお考えでしょうか。

    ブログ内に上記の記述は見当たらなかったのですが、先方にはMicrosoftの動作保証対象外となる可能性がある旨を伝え、静的リンクしたライブラリで不具合を検出したがMicrosoftは対処してくれない、となった場合は、アプリケーション側での対処や回避策を検討するという方針になりました。


    2014年10月7日 7:04