2

VS 2012 のプロジェクトがあります。最新の SDK が WIN 8 x64 コンピューターにインストールされており、プロジェクトは WIn32 を対象としています。

デバッグでクリーン ビルドを実行しましたが、リリース時に 1181 LNK エラーが発生しました - 入力ファイル kernel32.lib を開けません。

コンピューターのいくつかの場所にファイルがあり、VC ディレクトリには $(WindowsSdkDir_71A)lib と $(WindowsSdkDir)\lib があります。

プロセスモニターを使用して、再構築を試み、devenv.exe がファイルを探している場所を確認しました

** 更新: デバッグでは、適切な場所に表示されます。リリースでは、sdk を探しませんが、次のように表示されます。

Y:\MyProjectFofler\$(LibraryPath)\kernel32.lib PATH NOT FOUND と win8.0 sdk からの読み取りがいくつか成功しました (これで問題ないはずですが、結果は同じで、V7 から読み取る必要があります。 1A SDK フォルダー...)

それは何であり、このエラーの解決策は何ですか?

ありがとう。

4

1 に答える 1

2

Visual Studio 2017 を使用してこれに遭遇しました。必要な外部ライブラリ .lib ファイルを参照するように Visual Studio プロジェクト構成を取得しようとしていました。システムライブラリへの参照を削除したときに、このエラーを発生させることができました。後で、マクロ値の 1 つを含めることでこれを修正できることがわかりました (ただし、絶対的な直接パスを指定することはできますが、それはおそらく最適なコーディング規則ではなく、脆弱になりがちです)。

Visual Studio プロジェクトで、ソリューション エクスプローラー パネルのプロジェクト項目 (一番上の項目であるソリューション自体ではない) を右クリックし、[プロパティ] を選択します。そこから、次の操作を行います。

VC++ ディレクトリ --> ライブラリ ディレクトリ: $(ProjectDir)lib; $(ライブラリパス)

$(LibraryPath) 値には、親から継承されたものなどの追加の値が含まれることに注意してください。これは冗長なオプションであることがわかります。私のフォルダー プロジェクトには「lib」というフォルダーが含まれていたため、セミコロンの前に最初の値がありました。

ライブラリ ディレクトリの値を指定するために使用したその他の一般的なオプションがあります。

$(VC_LibraryPath_x86)
$(WindowsSDK_LibraryPath_x86)
$(NETFXKitsDir)Lib\um\x86

セクションVC++ ディレクトリ --> ライブラリ ディレクトリを見ると、エントリ行をクリックして [編集] を選択すると、評価されて解決されるマクロ値のライブ プレビューを見ることができます。追加の値またはより特化した値が必要な場合は、[マクロ] ボタンをクリックして、その他のオプションを探します。

Visual Studio 2017 ライブラリ ディレクトリ構成の画像へのリンク

于 2019-02-15T18:55:42.423 に答える