web-dev-qa-db-ja.com

Windows 7、64ビット、 DLL 問題

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

今、私は非常に同じプログラムのクライアントインストールを得て、クリーンなWindows 7インストールでそれをテストするように頼まれました。したがって、私は1つのWindows 7 64ビットVMwareを入手し、それを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ランタイム実行可能ファイルのインストール

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

サイドノート:私の開発用ボックスにもそれらがなく、またそれらを必要としていないようです。たとえば、VMware上のインストールはリンクしていますが、私の箱のuser32.dllはそれらの1つにリンクしていません。

この問題を解決する方法についての任意のアイデア?マイクロソフトのページで適切なダウンロード/修正を見つけようとしましたが、失敗しました。


私の問題を解決した後、私は私が見つけたものを報告したいと思いました、そして質問が閉じられたので私は答えとしてこれを投稿することができません。

実際には、すべてのDLLファイルがDependency Walkerツールによって欠落していると報告されています。

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

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

私の場合、3つのOCXファイルの登録が欠けていて、その後すべてがうまくいった後でも、プログラムが正常に動作していても、以前と同じようにまったく同じDLLファイルが表示されます。

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

253
tlvs

この問題は、Visual Studioの "redistributable package"がないことに関連しています。依存関係のウォークに基づいてどれが欠けているのかは明らかではありませんが、最初にあなたのコンパイラのバージョンに対応するものを試してみて、物事が正しく実行されるかどうかを確かめてください。

Visual Studio 2015

Visual Studio 2013

Visual Studio 2010

Visual Studio 2008

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


あえてここに新しいリンクを挿入するつもりです: サポートされている最新のVisual C++ダウンロード SteinÅsmul、29.11.2018

58
meawoppl

私も、私はMSCVC 2012でC++ Qt 5とW 7 64ビットで同じ問題を解決しました。

初めに私はそれがMSVC/windows dllの問題であると思いました、しかしBorisPが言ったように、問題は私のプロジェクトの依存関係にありました。重要なのは " Qt5でプロジェクトの依存関係を知る方法? "です。

それを知る明確な方法が見つからなかったので(Dependency Wolkerはあまり役に立ちませんでした...)、5分以内で次の "逆の手順"を実行し、Dllsの依存関係による頭痛の種を避けました。 :

  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分以上かかりません。

19
Inejose

私はちょうど同じ問題を解決しました。

この場合Dependency Walkerは誤解を招き、私は時間を無駄にしました。だから、最初の投稿から "行方不明"のDLLのリストは役に立ちません、あなたはおそらくそれを無視することができます。

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

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

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

だから、簡単な解決策は:あなたのすべてのプロジェクトの参照があるかどうかを確認してください。

乾杯

16
BorisP

前述のように、DCOMPはVC++再配布可能ファイル(OpenMPランタイムの実装)の一部であり、唯一欠けているコンポーネントです。残りはすべて虚偽の報告です。

具体的には、API-MS-WIN-XXXX.DLLは APIセット - 本質的に、余分なレベルの呼び出し間接指定 Windows 7以降、徐々に導入されています。 APIセットを正しく処理できません。

だからそこに心配することは何もない。もう足りないわけではありません。

欠けている本当に必要なDLLを見つけるためのより良い代替策(それが実際に問題である場合)は、ProcessMonitorを実行して失敗から逆方向に進み、すべての中で特定のDLLについて失敗したプローブのシーケンスを検索することです。システムパス.

11
Ofek Shilon

私もこの問題に遭遇しましたが、ここで共通のスレッドと思われる解決策、そして私がウェブ上の他の場所で見た解決策は「再配布可能パッケージを[再]インストールする」です。しかし、私にとっては、私たちの光沢のある新しいVS 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を製品インストールに追加する必要がありました。詳細については、 https://support.Microsoft.com/ja-jp/kb/2999226 を参照してください。VS 2015によるこれらの依存関係の追加について説明し、さまざまなWindowsプラットフォーム用のダウンロードを提供します。 CRTライブラリの再設計については、 https://blogs.msdn.Microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/ も参照してください。特に重要なのは、ユニバーサルCRTを使用するソフトウェアの配布というタイトルのセクション6です。

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

6
hlongmore

この貢献は最初の質問には実際には答えませんが、このスレッドのヒット率を考慮に入れると、API-MS-WIN-CORE-ライブラリーが見つからないという問題を扱っている人がかなりいると思います。

API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLLが単にVisual Studioを更新することによって見付からないエラーメッセージで私のアプリケーションが起動を拒否した問題を解決することができました。

私のビルド環境(Win 7 Pro SP1、Visual Studio Ultimate 2012)が完全に台無しにされたとは思いません。ほとんどのプロジェクトで問題なく動作しました。しかし、非常に特殊な状況下では、私はエラーメッセージを受け取りました(下記参照)。

Visual Studio 11をアップデートした後 - 初期のCD-Version(バージョン番号を調べるのを忘れた)からバージョン11.0.61030.00 Update 4に、また壊れたプロジェクトが実行されていました。

これが誰かに役立つことを願っています!

Error message at application startup

5
normanius

これで問題は解決しました。
VS 2010再頒布可能パッケージを既にインストールしている場合は、アンインストールしてから Microsoft Windows 7 SDKをインストールします

3
Krazibit312

私はその問題を解決した。 OCXファイルを登録したとき、管理者として実行されたコマンドウィンドウで実行しました。

2
Kim

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

1
LukaszS

私は同じ問題を抱えていた。ウェブで何時間もかけて検索した後、私は私に解決策を見つけました。私はファイルをcomale.dll(C:\ windows\system32)にまとめてrealeseフォルダに入れて解決しました。

1
user2938031

フォトショップの問題でここに来た人のために:私の解決策はms vc ++再配布可能な最初のx86と64両方をアンインストールすることでした。 1つをインストールするよりもWindowsのバージョンとアーキテクチャ(86または64)に最適です。

1
NoWomenNoCry

現在使用されているメモリ量を確認することもお勧めします。これらのDLLが見つからないことが、Visual Studioでプログラム(実行またはデバッグ)を実行しようとしたときに発生した最初の症状であることがわかりました。頭をひっかいたり、Webを検索したり、procmonを実行したり、タスクマネージャを実行したりして30分以上経ったところ、当初から実行されていたまったく別のプログラムが「メモリが少ない。そのような。 Firefox、Thunderbird、procmonを殺しても、すべてがまたうまくいった。

0
Donald Locker

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

Microsoftのフォーラムなどを検索した結果、私には以下の解決策が見つかりました。

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

0
djsmiley2k