none
Win32プロジェクトで作成したexeのXPスタイル化について RRS feed

  • 質問

  • はじめて投稿させていただきます。

     

    VisualStudio 2005 Pro、VC++のWin32プロジェクトでexeを作ったのですが、

    ダイアログがクラシックスタイルになってしまい、

    http://forums.microsoft.com/msdn-ja/ShowPost.aspx?PostID=275482&SiteID=7

    の回答を参考にマニフェストの作成をし、exeと同じフォルダにいれ、実行したのですが

     

     

    コンポーネントが見つかりません

    MSVCR80D.dllが見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直す

    とこの問題は解決される場合があります。

     

    とエラーがでます。

    これはMSVCR80D.dllが別途必要ということでしょうか?

     

    開発環境:XP Pro SP2

    2008年3月6日 2:31

回答

  • マニフェストの有無と、MSVCR80.DLLの因果関係は知らないんですが。。。

     

    ランタイムのDLLを配布するのに問題があるならば、

    DLLを利用せずにstaticリンクしてやってはどうでしょう?

    問題ないならば、MSVCR80.DLLを再配布すれば大丈夫だと思います。

     

    staticリンクのやり方ですが、

    構成プロパティ > C/C++ > コード生成 > ランタイムライブラリ

    から、マルチスレッドなりマルチスレッド デバッグなり、

    DLLを使用しない適当なものを指定してやれば大丈夫だと思います。

     

    このあたりのサイトを参考にしてみてください。

    http://crys.uijin.com/program/vc2005/msvcr80.html

    2008年3月6日 5:13
  • MSVCR80D.dll は、デバッグ版のDLLです。

    開発環境でこれがないといわれているのであれば、manifest ファイルの構成の問題ですが、インストール環境で出るのであれば、デバッグ版を配っていることが問題です。

     

    テストの場合は別ですが、基本的にインストール環境での利用は、リリース版を使う必要があります。

    vcregist_*.exe がインストールするのもリリース版のランタイムだけですし。

     

    2008年3月6日 9:15

すべての返信

  • マニフェストの有無と、MSVCR80.DLLの因果関係は知らないんですが。。。

     

    ランタイムのDLLを配布するのに問題があるならば、

    DLLを利用せずにstaticリンクしてやってはどうでしょう?

    問題ないならば、MSVCR80.DLLを再配布すれば大丈夫だと思います。

     

    staticリンクのやり方ですが、

    構成プロパティ > C/C++ > コード生成 > ランタイムライブラリ

    から、マルチスレッドなりマルチスレッド デバッグなり、

    DLLを使用しない適当なものを指定してやれば大丈夫だと思います。

     

    このあたりのサイトを参考にしてみてください。

    http://crys.uijin.com/program/vc2005/msvcr80.html

    2008年3月6日 5:13
  • MSVCR80D.dll は、デバッグ版のDLLです。

    開発環境でこれがないといわれているのであれば、manifest ファイルの構成の問題ですが、インストール環境で出るのであれば、デバッグ版を配っていることが問題です。

     

    テストの場合は別ですが、基本的にインストール環境での利用は、リリース版を使う必要があります。

    vcregist_*.exe がインストールするのもリリース版のランタイムだけですし。

     

    2008年3月6日 9:15
  •  

    hyuga9様のやり方で、なんとかXPスタイルにすることができました。

    ただ、とっちゃん様の言われるとおり、manifestの方にも問題がありそうなので、

    これから試行錯誤していきたいと思います。

    2008年3月6日 11:47