3

私はC++プログラムを持っています。それは非常に簡単です - 画像 (スプラッシュ スクリーン) を表示し、別のアプリケーションを起動し、その別のアプリケーションが起動すると閉じます。実際には、これ: http://www.olsonsoft.com/blogs/stefanolson/post/A-better-WPF-splash-screen.aspxに非常に小さな変更を加えたもの (サンプルの代わりにスプラッシュ画面の画像とプログラムが起動されます) 1)。

私の Windows 7 開発マシンでは問題なく動作します。また、Windows XP SP2 と Visual Studio 2008 がインストールされた別の (仮想) マシンでも動作します。ただし、Visual Studio を使用しない同じ仮想 Windows XP SP2 マシンだけでは機能しません。「ダイナミック リンク ライブラリ msvcrt.dll にエントリ ポイント memmove_s が見つかりませんでした」というエラーが表示されます。

WindowsCodec DLL に問題がある可能性があることがわかりました (クリア XP SP2 インストールにはそのような DLL はありませんが、Visual Studio を使用した XP SP2 の Windows/system32 フォルダーにあります)。そのため、クリア システムのアプリケーション フォルダーにコピーしました。その後、プログラムは部分的に動作します (開始後に別のアプリケーションを起動します) が、スプラッシュ スクリーン イメージは表示されませんでした。

Microsoft Visual C++ 再頒布可能パッケージ (2008 と 2010 の両方) のインストールは役に立ちませんでした。

Visual Studio で静的リンクを使用することをお勧めします(プロジェクト プロパティのマルチ スレッド (/MT)オプション -> C/C++ -> コード生成) が、これも役に立ちませんでした。

また、DependencyWalker を試しましたが、両方のテスト システムの依存関係に違いが見つかりません。

なぜこれが起こるのか誰にも考えがありますか?私はC ++をまったく初めて使用しています。これが私が知らない明らかなものであることを願っています...

4

2 に答える 2

3

プログラムは、少なくともバージョン 3.0 の .NET フレームワークに依存しています。デフォルトでは、XP SP2 インストールでは使用できません。windowscodecs.dll が表示されない場合は、適切なバージョンの .NET がインストールされていません。VS2008 をインストールすると、.NET もインストールされるため、これは機能します。

ダウンロードはこちら.

于 2012-04-09T12:05:29.280 に答える