276

実行可能ファイルに問題があります。この C++ 32 ビット実行可能ファイルを、Microsoft アプリケーション (Visual Studio 2008 + 2010、TFS、SDK、Microsoft Office) がすべて含まれている Windows 7 64 ビット開発ボックスで実行しています...それでも問題なく動作しています。

今、まったく同じプログラムのクライアント インストールを取得し、クリーンな Windows 7 インストールでテストするように求められました。したがって、Windows 7 64 ビット VMware を 1 つ入手し、それを Windows 7 SP 1 に更新しました (私の開発ボックスがチューニングしているバージョンとまったく同じです)。しかし、私の開発者ボックスではすべて問題ありませんが、プログラムは VMware (30 日間トライアル) ボックスでは動作しません。

x86 Dependency Walkerから、次の DLL ファイルが見つからないというメッセージが表示されます。

  • API-MS-WIN-CORE-COM-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
  • API-MS-WIN-SHCORE-SCALING-L1-1-0.DLL
  • DCOMP.DLL
  • GPSVC.DLL
  • IESHIMS.DLL

私はこれらの API-MS-WIN-... DLL ファイルをグーグルで検索し、実際には既に Windows 7 の一部である必要があることを発見しました (一部のサイトでは、Windows 8 および Windows Server 2012 に属していると主張しています)。

私が見つけた提案された修正をすでに試しました。

  • 「sfc /scannow」を実行しています
  • Visual Studio 2008 SP1 ランタイム実行可能ファイルのインストール

しかし、それは何も解決しませんでした。:-(

補足: 私の開発ボックスにもそれらはなく、必要もないようです。たとえば、私のボックスの user32.dll はそれらのいずれかにリンクしませんが、VMware へのインストールはリンクします。

この問題を解決する方法について何か考えはありますか? Microsoft のページで適切なダウンロード/修正プログラムを見つけようとしましたが、失敗しました。


問題を解決した後、発見したことを報告したかったのですが、質問が閉じられているため、これを回答として投稿できません。

実際には、Dependency Walker ツールによって見つからないと報告されたすべての DLL ファイル、つまり

* API-MS-WIN-CORE-...

タイプ DLL ファイルは、実際の問題の一部ではありませんでした。

私の場合、3 つの OCX ファイルの登録が欠落しており、その後はすべて問題ありませんでしたが、プログラムが正常に実行されていた場合でも、Dependency Walker ツールは以前とまったく同じ DLL ファイルをすべてリストしました。

その要点: 他の誰かが述べたように、このツールは今では少し時代遅れであり、新しい OS では常に適切に動作するとは限りません。したがって、目を離さず、'API-MS-WIN-CORE-COM-L1-1-0.DLL' を見逃して誤解を招かないようにしてください。問題はおそらく完全に別の場所にあります。

4

14 に答える 14

63

この問題は、Visual Studio の「再頒布可能パッケージ」が見つからないことに関連しています。依存関係のウォークに基づいてどれが欠けているかは明らかではありませんが、最初にコンパイラのバージョンに対応するものを試して、正しく動作するかどうかを確認します。

ビジュアル スタジオ 2015

ビジュアル スタジオ 2013

ビジュアル スタジオ 2010

ビジュアル スタジオ 2008

私は Visual Studio コンパイラを使用していますが、完全な Visual Studio 環境を使用していないため、この問題に遭遇しました。


あえて新しいリンクをここに挿入します: The latest supported Visual C++ downloads . スタイン・アスムル、2018 年 11 月 29 日

于 2013-07-18T15:47:35.787 に答える
19

MSCVC 2012 を使用して、C++ Qt 5 および Windows 7 64 ビットで同じ問題を解決しました。

最初は、MSVC/Windows DLL ファイルの問題だと思っていましたが、BorisP が言ったように、問題は私のプロジェクトの依存関係にありました。重要なのは、「Qt 5 でプロジェクトの依存関係を知るには?」です。

それを知る明確な方法が見つからなかったので ( Dependency Walkerはあまり役に立ちませんでした...)、次は「逆の手順」に従いました。ファイルの依存関係:

  1. プロジェクトをコンパイルし、実行可能ファイルを空のフォルダーmyproject.exeに移動します。
  2. 実行してみると、エラーが表示されます (DLL ファイルが見つかりません...)。
  3. 次に、 Qt からすべての DLL ファイル(私の場合は C:\Qt\Qt5.1.1\5.1.1\msvc2012_64_opengl\bin にありました) をこのフォルダーにコピーします。
  4. もう一度実行してみてください。おそらく問題なく動作します。
  5. 徐々に削除を開始し、実行可能ファイルがまだ機能するたびに、必要最小限の DLL ファイルを残すようにします。

すべての DLL ファイルを同じフォルダーに置くと、有効でないファイル (XML、WebKit など) を簡単に見つけることができるため、この方法に 5 分以上かかることはありません。

于 2013-12-16T08:18:27.527 に答える
17

同じ問題を解決しました。

この場合、 Dependency Walkerは誤解を招き、時間を無駄にしました。したがって、最初の投稿の「不足している」DLL ファイルのリストは役に立たず、おそらく無視してかまいません。

解決策は、プロジェクトが呼び出している参照を見つけて、それらが実際にサーバーにインストールされているかどうかを確認することです。

@Ben Brammer、Leo T Abrahamのプロジェクトでのみ欠落しているため、3つの.ocxファイルが欠落していることは重要ではありません。プロジェクトはおそらく他の DLL ファイルを呼び出します。

私の場合、3 つの .ocx ファイルではなく、MySQL コネクタ DLL ファイルがありませんでした。サーバーに MySQL Connector for .NET をインストールした後、問題は解消されました。

要するに、解決策は次のとおりです。すべてのプロジェクト参照がそこにあるかどうかを確認してください。

于 2013-12-13T17:21:21.470 に答える
6

私もこの問題に遭遇しましたが、ここで一般的なスレッドのように思われる解決策と、Web の他の場所で見た解決策は、「再配布可能パッケージを[再]インストールする」ことです。ただし、光沢のある新しい Visual Studio 2015 ビルドをテストするために製品のインストーラー (再頒布可能パッケージをインストールする) を実行しているときに問題が発生したため、これは機能しません。

リストされている DLL ファイルが Visual Studio のインストール パス (たとえば、C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist) になく、インストールに追加されていないため、問題が発生しました。これらの api-ms-win-* dll は、Visual Studio 2015 インストールの一部として Windows 10 SDK インストール パスにインストールされます (例: C:\Program Files (x86)\Windows Kits\10\Redist)。

Windows 10 へのインストールは正常に機能しましたが、Windows 7 へのインストールでは、これらの DLL ファイルを製品インストールに追加する必要がありました。詳細については、Visual Studio 2015 によって引き起こされるこれらの依存関係の追加について説明し、さまざまな Windows プラットフォームのダウンロードを提供するWindows のユニバーサル C ランタイムの更新を参照してください。CRT ライブラリの再設計について説明している Universal CRT の紹介も参照してください。特に興味深いのは、Universal CRT を使用するソフトウェアの配布というタイトルのセクションの項目 6です。

2015 年 9 月 11 日更新: Universal CRT のアプリローカル展開がサポートされています。アプリローカル展開用のバイナリを取得するには、Windows 10 用の Windows ソフトウェア開発キット (SDK) をインストールします。バイナリは、C:\Program Files (x86)\Windows Kits\10\Redist\ucrt にインストールされます。アプリですべての DLL をコピーする必要があります (必要な DLL ファイルのセットは Windows のバージョンによって異なることに注意してください。そのため、サポートされているすべてのバージョンでプログラムを実行するには、すべての DLL ファイルを含める必要があります。 Windows の)。

于 2016-02-17T19:39:24.067 に答える
3

これで問題は解決しました:

Visual Studio 2010 再頒布可能パッケージが既にインストールされている場合はアンインストールしてから、Microsoft Windows 7 SDKをインストールします。

于 2013-08-13T06:22:27.970 に答える
0

新しくインストールした Windows 7にSQL Server Management Studio 2014 をインストールすると、2 日間のばかげた戦いの後、クライアントでこの問題が解決されました。

于 2014-09-16T19:35:28.467 に答える
0

Windows 7 OEM の新規インストールを試み、Windows 10 にアップグレードした後、この問題が発生してここに来ました。

Microsoftフォーラムなどを検索した後、次の解決策が見つかりました。

C:\Windows10Upgrade\wimgapi.dllからのものに置き換えます。C:\Windows\System32\wimgapi.dll

于 2017-12-21T11:09:39.007 に答える