web-dev-qa-db-ja.com

リンク:致命的なエラーLNK1104:ファイル 'D:\ ... \ MyProj.exe'を開けません

Visual Studio 2010を使用して、短い間隔でアプリケーションをビルドおよび実行すると、次のエラーが頻繁に発生します。 1〜2分待ってからもう一度試してみると、うまくいきます。 nlocker は、ハンドルが実行可能ファイルをロックしていないと主張します。
ロックの原因を見つけるにはどうすればよいですか?
Visual Studio自体の場合、停止させるにはどうすればよいですか?または、代わりにファイルを解放しますか?

1>------ Build started: Project: MyProj, Configuration: Release Win32 ------
...
1>InitializeBuildStatus:
1>  Creating "Release\MyProj.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>ClCompile:
1>  All outputs are up-to-date.
1>  SomeFile1.cpp
1>ResourceCompile:
1>  All outputs are up-to-date.
1>LINK : fatal error LNK1104: cannot open file 'D:\...\MyProj.exe'
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.94
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
48
Jonathan

今日の再インストール後にこの問題が発生しました。 Application Experienceサービスが開始され、無効に設定されていないことを確認してください。手動に設定されている場合、VSが開始すると考えています。

39
user963228

おそらく、実行可能ファイルをロックするストレイビルドプロセスがあり、それ(ストレイプロセス)はクリーンアップされませんでした。その場合は、Visual Studioをシャットダウンし、プロセスエクスプローラーを開き、Visual Studioに関連するすべてのプロセスを見つけます。その後、再びVisual Studioを開き、プロジェクトを再構築してください。

13
C Johnson

これは非常に古いことは承知していますが、Visual Studio 2010で同じ問題がすべてパッチ適用されたため、他の人がこの問題に遭遇する可能性があります。

AVGアンチウイルス設定で[除外アイテム]にプロジェクトパスを追加すると、問題が解決したようです。

ウイルス対策/常駐シールドを無効にして、問題が解決するかどうかを確認してください。その場合は、AV構成の除外ディレクトリにプロジェクトパスを追加します。

12
standrejo

現在実行中のため、ファイルをロックできます。タスクマネージャでプロセスを強制終了してください。

5
Ilya Smagin

ジョナサンが言ったように、はい、名前の変更はこの問題を回避するのに役立ちます。しかし、例えばターゲットの実行可能ファイルの名前を何度も変更することを余儀なくされました。

問題は、プロジェクトを実行し、後でプロジェクトをビルドできないというエラーが発生したときです-この実行可能ファイル(プロジェクト)がまだ実行されているためです(タスクマネージャーで確認できます)。ターゲットビルド、しばらくすると新しい名前でも同じエラーが発生します。タスクマネージャーを開くと、完了していないプロジェクトでシステムがゴミになることがわかります。

新しいビルドを作成するためのVisual Studioは、以前の実行可能ファイルを削除し、古いものではなく新しいものを作成する必要があります。実行可能ファイルがまだ実行されている間は実行できません。したがって、新しいビルドを作成する場合は、古い実行可能ファイルのプロセスを閉じる必要があります! (ビジュアルスタジオがそれ自体を閉じないのは奇妙であり、はい、バグのある動作のように見えます)。

enter image description here

手動で行うのは面倒なので、このような問題がある場合は、batファイルだけでクリックするだけです。

taskkill /f /im name_of_target_executable.exe

少なくとも私にはうまくいきます。推測のように-私はC++でプログラムを適切に閉じていないので、Visual Studioがプログラムを実行し続けるのは普通のことかもしれません。

追加:アプリケーションが完成していないため、そうなる可能性が高いです。完了したことをWindowsに知らせるために、最後にPostQuitMessageを呼び出したかどうかを確認します。

4
Tebe

出力を閉じていない可能性があります。出力を閉じ、ファイルを消去して再構築します。今すぐファイルを実行できる場合があります。

4
Balaji

これは何らかのVisual Studioのバグであると結論付けました。おそらくC Johnsonが正しい-おそらく、ビルドプロセスによってファイルがロックされたままになります。

回避策があります-これが起こるたびに-プロジェクトのプロパティで実行可能ファイルのターゲット名を変更します(プロジェクトを右クリックしてから、Properties\Configuration Properties\General\Target Name)。

この方法で、VSは新しい実行可能ファイルを作成し、問題を回避します。これを数回行うたびに元の名前に戻り、3つまでの名前を繰り返します。

誰かがこれと解決策の理由を見つけたら、答えをしてください。

2
Jonathan

私は同じ問題を抱えていましたが、コードブロックを使用していました。この問題のために、私はプログラミングを終了しました。なぜなら、私はいつも自分のコンピューターを窓から追い出したかったからです。

User963228に本当に感謝します。答えは本当にそれに対する解決策です。アプリケーションエクスペリエンスを手動スタートアップに設定する必要があります(Windows 7の[スタート]メニューでサービスを検索してから、アプリケーションエクスペリエンスを見つけてプロパティをクリックします)。

この問題は、人々がWindows 7マシンを微調整したいときに発生し、いくつかの無意味なサービスを無効にすることを決定したため、いくつかの調整ガイドをグーグルで検索し、それらのガイドのほとんどはApplication Experienceを無効にしても安全であると述べています。

この問題は、VSの問題ではなく、Windows 7の問題にリンクする必要があり、より目に見えるはずです-この解決策を見つけるのに長い時間がかかりました。

再度、感謝します!

2
Peeter

私はVS2013で同じ問題に遭遇し、C++でデバイスドライバーを作成しましたが、上記のどれも問題を解決していないようです。しかし、私の場合、問題はVMWareに関連しているように見えることを発見しました。

C:ドライブ全体でVMで定義された共有フォルダーでVMWareワークステーションクライアントを実行していました。VM Settings 、VS2013は.exeファイルを問題なくビルドできました。

私の新しいプロセスは次のとおりです。

1)vmで共有フォルダーを無効にします(VM設定|オプション|共有フォルダー-チェックボックスをオフにします)2)ホストPCでビルドを実行します3)共有フォルダーを再度有効にします(そしてそこから続行します)

うまくいけば、これが他の誰かを助けるかもしれない。

(ところで、表示されるエラーは、.exe(または他のファイル)がロックされているか、管理者権限が必要ですが、それは赤いニシンです-VMWare共有がこれらのファイルをロックされているように見せているようです)

1
blairh

リストに別のソリューションを追加するために、私が見つけたのは、Visual Studio(私の場合は2012)が異なるプロセスでファイルをロックすることがあるということです。

そのため、クラッシュ時には、devenv.exeがまだ実行中でファイルを保持している可能性があります。別の方法として(ちょうど私が発見したように)、vstestrunnerまたはvstestdiscoveryもファイルを保持している可能性があります。

これらすべてのプロセスを強制終了すると、問題が解決する場合があります。

1
SJoshi

通常、これは、プログラムがロックされており、タスクマネージャーまたはプロセスエクスプローラーによって強制終了されない可能性があることを意味します。プログラムの実行中に例外が発生し、プログラムをロックしたWindowsエラー報告をトリガーするという同様のケースに遭遇しました。 Windowsエラー報告がプログラムをロックする場合は、コントロールパネル->システムとセキュリティ->アクションセンター->問題報告設定に進み、「解決策を確認しない」を設定します。役に立てば幸いです。

1
tkingcer

私の場合、MASMリストファイルオプションを追加選択すると、このエラーが発生します。

ただ使う

 Enable Assembler Generated Code Listing   Yes/Sg
 Assembled Code Listing $(ProjectName).lst

それは結構です。

ただし、問題がある場合は追加します。

0
Dennis Ng

C++「FLTK」を使用したBjarne Stroustrupプログラミングの原則と実践の使用例同じエラーが発生しましたが、1時間後にアイデアを得た後、プロジェクトプロパティ->リンカ->入力->追加の依存関係で既に見られるライブラリの1つを追跡、私の場合、kernel32.libを追跡してどこにあるかを確認し、異なるフォルダに多くのkernel32.libがあることを確認しました。だから私はそれらのフォルダのFLTKライブラリのコピーを開始し、最後に試したものが機能しました。 Visual Studio 2013 Expressはfltkd.libを見つけ、コードは機能しました。

私の場合、正しいルートはC:\ Program Files(x86)\ Windows Kits\8.1\Lib\winv6.3\um\x86でした。

Visual Studio内でそのルートを設定する方法がわかりません。

Windows 7および.NET Framework 4(ISO)用のMicrosoft Windows SDKをインストールしたときにそのWindowsキットフォルダーが作成されたかどうかわからない http://www.Microsoft.com/en-us/download/details.aspx? id = 8442

それがあなたの助けになることを願っています。

0

エラーは(少なくとも時々)長すぎるパスから発生します。私のプロジェクトでは、出力ファイルのパスを単純に減らすと、「Properties/Configuration Properties/General/Intermediate Directory」というジョブが実行されます。

250文字のパス制限に達したようです。

0
Jesko

同じ問題があっただけです。私と一緒にexeはまだ実行されていましたが、タスクマネージャで終了できませんでした。 VSを再起動するだけで、うまくいきました。

0
Jan_