匿名質問者

vs2015 でwin32プログラムを作成。コンパイル開始時に以下のエラーメッセージが表示されコンパイルできません。

1>LINK : fatal error LNK1104: ファイル 'xxxxx.exe' を開くことができません。

原因はデバッグで実行ファイル'xxxxx.exe'をラン、トレースして終了後、再コンパイルする際に発生します。vs2013が再コンパイルに際して古い'xxxxx.exe'を削除できないためのようです。
原因は、explorerが当該実行ファイル'xxxxx.exe'をロックしているためのようです。そのため手動で'xxxxx.exe'を削除しようとしても削除不可で、例えば[unlocker]等のロック解除ソフトで削除ないし解放させようとしてもそもそもロックを認識しません。
しかし、explorer をタスクマネジャーから終了させ、再起動しますとロックは解除され削除することが可能です。いちいちこの作業、explorerを終了、再起動、削除、再コンパイルは大変ですので。もし回避できる方法等をご存じならご教授願いたいです。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2015/05/14 12:03:14

回答1件)

匿名回答1号 No.1

普通は実行ファイルを表示しているウィンドウを閉じると放したと思うのですが、
原因究明はおいておいて、対処療法としてはexplorerを使わない、という手はありませんか?

  • 匿名回答2号
    匿名回答2号 2015/05/14 00:06:18
    違うかもですが、AeLookupSvc サービスが悪さしているケースがあるようです。

    ■ Windows で実行プログラムを終了後、SYSTEM プロセス により 60 秒間ファイル ハンドルが確保される
    https://support.microsoft.com/ja-jp/kb/2483362/ja

    <参考情報>
    ■ LINK : fatal error LNK1104: cannot open file 'D:\…\MyProj.exe'
    http://stackoverflow.com/questions/3906404/link-fatal-error-lnk1104-cannot-open-file-d-myproj-exe
  • 匿名質問者
    匿名質問者 2015/05/14 11:59:10
    有り難うございました。とりあえず解決したみたいです。
    起動されているサービスを調べましたら、Application Experience (AeLookupSvc) サービスを無効に設定しておりました。スタートアップの種類を [手動] に変更すると、とりあえずですが動作するようになりました。
    AeLookupSvcが無効で、起動されないため、SYSTEM プロセスが 60 秒のタイムアウトの後、実行ファイルのハンドルの解放処理を実施していたのだろうと思います。
    有り難うございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません