致命的なエラー「LNK1104:」が発生するのはなぜですか?Visual Studio で C++ プロジェクトをコンパイルすると、「ファイル 'C:\Program.obj' を開けません」というエラーが発生しますか?
-
02-07-2019 - |
質問
Visual Studio 2008 で新しい C++ プロジェクトを作成しました。コードはまだ書かれていません。プロジェクト設定のみが変更されました。
プロジェクトをコンパイルすると、次の致命的なエラーが発生します。
致命的なエラー LNK1104:ファイル「C:\Program.obj」を開けません
解決
この特定の問題は、パスにスペースが含まれる lib ファイルへの依存関係を指定することによって発生します。プロジェクトを正しくコンパイルするには、パスを引用符で囲む必要があります。
で 構成プロパティ -> リンカー -> 入力 プロジェクトのプロパティのタブには、 追加の依存関係 財産。この問題は、このプロパティを次のように変更することで修正されました。
c:プログラムファイル sofware sdk lib library.lib
に:
"c: program files sofware sdk lib library.lib"
引用符を追加したところ。
他のヒント
これは、ファイルがまだ実行中の場合にも発生する可能性があります。
:-1:エラー:LNK1104:ファイル「debug\****.exe」を開けません
Visual Studio を閉じて再度開くと、問題は解決しました。問題が発生した理由はわかりませんが、試してみる価値はあるかもしれません。
これは VS 2013 Ultimate、Windows 8.1 上で行われました。
これがオンになっていないことも確認してください。 構成プロパティ -> C/C++ -> プリプロセッサ -> ファイルへの前処理.
私も同じ問題がありました。追加ライブラリのパスのフォルダー名に「,」が含まれていることが原因でした。追加ライブラリのパスを変更することで解決しました。
私の問題は欠落していました .lib
拡張子、私はちょうどリンクしていました mylib
そしてVSは探すことにしました mylib.obj
.
私の場合、それは間違った方向への参照の問題でした。プロジェクトは別のプロジェクトの出力を参照しましたが、後者は前者が探していたファイルを出力しませんでした。
アセンブリ プロジェクト ([プロジェクト名] -> [ビルドの依存関係] -> [ビルドのカスタマイズ] -> [masm (選択)]) の設定 前処理されたソースリストの生成 に 真実 私にとっても問題が発生したため、設定をクリアすると解決しました。VS2013はこちら。
リンカでメインの実行可能ファイルが見つからないという同じ問題に遭遇しました。これは、新しいソリューションへのソリューションの移植中に発生しました。 Visual Studio 2013. 。このソリューションは、マネージド プロジェクトとアンマネージド プロジェクト/コードをさまざまに組み合わせたものです。問題 (および修正) は結局見つからなかった app.config ソリューションフォルダー内のファイル。出力ログはあまり役に立たなかったので、これを理解するのに 1 日かかりました:(。
このリストに従ってすべての設定を確認しました。 http://msdn.microsoft.com/en-us/library/ts7eyw4s.aspx#フィードバック 。これは私にとって役に立ちます。私の状況では、プロジェクトのプロパティのリンク依存関係に、本来あるべきではない二重引用符が含まれていることがわかりました。
インストールした Nuget パッケージ (ヘッダーのみではないもの) だけで同じエラーが発生し、アンインストールしようとしました。
私にとって間違っていたのは、.cpp ファイルの 1 つにアンインストールしたばかりのパッケージのヘッダーがまだ含まれていることです (かなりばかげています、はい)。
追加のライブラリディレクトリへのリンクも削除しました Project -> Properties -> Linker -> General
, 、しかし、存在しないヘッダーをまだ参照しようとしていたので、もちろん役に立ちませんでした。
この場合、ヘッダー名が <boost/filesystem.hpp>
しかし、エラーにより私に与えられた "cannot open file 'llibboost_filesystem-vc140-mt-gd-1_59.lib'"
行番号などはありません。
私も同じ問題を抱えていましたが、私の場合の解決策は回答に記載されていません。ウイルス対策プログラム (AVG) が特定したファイル MyProg.exe
ウイルスとして「ウイルス倉庫」に入れます。このストアハウスを確認して、ファイルが存在する場合は、それを復元するだけです。それは私を助けてくれました。
解決策 1 (私の場合):Windows エクスプローラー プロセス (はい、Windows ファイル マネージャー) を再起動します。
解決策 2:
- Visual Studio を閉じます。Windows ログオフ
- ログオンし、Visual Studio を再度開きます
- いつものようにビルドします。これでビルドが完了し、問題のあるファイルにアクセスできるようになりました。
ファイル システムまたはそれを制御しているユーザーが、そのアクセス許可を失うことがあると思います。Windowsセッションを再起動する前に、ゾンビを殺そうとしました msbuild32.exe
プロセスを実行し、Visual Studio を再起動し、問題のあるファイルが表示されていても何もチェックしません。ビルド構成の問題はありません。それは時々起こります。Windows の内部の問題が修復されないため、再起動が必要です。
この特定の解決策が他の人によってリストされていないので、私が回答しました。
どうやら私のアンチウイルス (Ad-Aware) が、プロジェクトの 1 つが依存している DLL にフラグを立て、それを削除していたようです。DLL が存在するディレクトリを除外した後でも、コンピュータを再起動するまで同じ動作が続きました。
私の場合、以前のゲーム エンジン グラフィックス コースの数学ライブラリ ファイルを GLM に置き換えました。問題は、それらがプロジェクト リポジトリ内にあったにもかかわらず、Visual Studio のソリューション エクスプローラー内のプロジェクトに追加しなかったことです。
LNK2038エラーと関連してこの問題が発生したため、これに従いました 役職 RELEASE DLL と DEBUG DLL を分離します。このプロセスでは、これらの依存関係が存在するフォルダー全体をクリーンアップしました。
幸いなことに、私はこれらすべてのファイルのバックアップを持っていたので、このエラーが発生したファイルを DEBUG フォルダーに戻して問題を解決しました。この投稿の回答の 1 つから再度このヒントにたどり着くまでに多くの時間を費やす必要があったため、エラー コードは何らかの形で誤解を招くものでした。
この回答が困っている人の助けになれば幸いです。
私はそれを解決しました 追加する の 既存のプロジェクト に 私の 解決, 、私はそれを 追加するのを忘れた 1回目の。
同じエラーが発生しました:
fatal error LNK1104: cannot open file 'GTest.lib;'
この原因は次のとおりです。 ;
最後に。複数のライブラリがある場合は、カンマやセミコロンを使用せず、空のスペース (スペースバー) で区切る必要があります。
だから使わないでください ;
またはライブラリをリストするときのその他の何か プロジェクトのプロパティ >> 構成プロパティ >> リンカー >> 入力
「Visual Studio 2013」でも同じ問題に遭遇しました。
LNK1104: cannot open file 'debug\****.exe
Visual Studio を閉じて再起動すると解決しました。
私も同じ問題を抱えていました。コードを新しいプロジェクトにコピーしてビルドを開始しました。他のエラーが発生し始めました。エラー C4996:'fopen':この関数または変数は安全でない可能性があります。代わりに fopen_s の使用を検討してください
この問題を再度解決するために、以下のように Project プロジェクトにプロパティを 1 つ追加しました。プロジェクト -> プロパティ -> 構成プロパティ -> c/c++ 。このカテゴリには、フィールド名プリプロセッサの定義があります_CRT_SECURE_NO_WARNINGSを追加しました。
ありがとう