1

短編小説をさらに短くするために、gperf2.0プロジェクトをコンパイルし、出力を別のプロジェクトの「lib\Release」および「lib\Debug」フォルダーに追加しました。次に、リリース構成のリンカー入力にlibtcmalloc_minimal.libファイルを追加し、デバッグ構成のlibtcmalloc_minimal-debug.libを追加し、追加のライブラリフォルダーを$(ProjectDir)lib \ Release for Release、および$( ProjectDir)lib \ DebugforDebug。ビルド後のイベントも追加しました。リリースの場合は「$(ProjectDir)lib \ Release*。」「$(TargetDir)」をコピーし、デバッグの場合は「$(ProjectDir)lib \Debug。*」「$(TargetDir)」をコピーします。

問題?

エラー3致命的なエラーLNK1181:入力ファイルを開くことができません'.. \ lib \ Debug\libtcmalloc_minimal-debug.lib'フレームワークフレームワーク

そして、リリース構成でプロジェクトをビルドすると、それがわかります。なぜデバッグライブラリを使用するのでしょうか?コマンドライン出力をトリプルチェックしましたが、正しいフォルダーが使用されています。では、何が得られるのでしょうか?(/ LIBPATH: "g:\licenta \ Framework-transfer_RO-03may-94b4df \ Framework \ Framework \ lib \ Release")

編集

また、$キーワードを使用せずに、libパスを手動で追加した別のPCで、コンパイルが成功したことも追加する必要があります。ただし、このPCでは、libファイルがコンパイルされていても、リンカーエラーが発生します。私はリンカーが嫌いです。

編集2

また、libファイルはdllのインポートライブラリであることにも言及する必要があります。dllは両方のPCでコンパイルされました。

編集3

libパスを手動で追加しても、機能しません。私はこの問題を1時間理解しようとしてきましたが、それは面倒です。私はリンカーが本当に嫌いです。

編集4

ヘッダー、dllなど、そのlibファイルへのすべての参照を削除しました。それはまだ私にこれを与えます:

エラー3致命的なエラーLNK1181:入力ファイルを開くことができません'.. \ lib \ Debug\libtcmalloc_minimal-debug.lib'フレームワークフレームワーク

なに。

4

1 に答える 1

1

この問題を解決するためにリンカー プロジェクト プロパティを使用しないでください。代わりに、ソリューション エクスプローラー ウィンドウでプロジェクト名を右クリックし、[既存の項目の追加] を選択し、ファイル ブラウザーを使用して必要なファイルを選択することにより、ライブラリをプロジェクトに直接追加します.lib

ライブラリのデバッグ バージョンとリリース バージョンの両方が必要なため、少し複雑です。これを解決するには、説明した方法を使用して と の両方libtcmalloc_minimal.libをプロジェクトに追加します。libtcmalloc_minimal-debug.libそれで:

  1. (ソリューション エクスプローラー ウィンドウで)を右クリックし、[libtcmalloc_minimal.libプロパティ] を選択し、構成を [デバッグ] に設定し、[ビルドから除外] を [はい] に設定します。[OK] をクリックします。
  2. で同じことを行いlibtcmalloc_minimal-debug.libます。今回のみ、「ビルドから除外」= YES の「リリース」構成があります。

(したがって、Releaselibtcmallocは Debug バージョンで除外され、Debuglibtcmallocは Release バージョンで除外されます。そうしないと、両方のライブラリを同時にリンクしようとします。)

Visual Studioは、.libファイルがプロジェクト ファイルにリストされている場合、正しい相対パスを使用してリンカーに渡す必要があることを認識しています。また、現在の構成 (デバッグまたはリリース) に対して「ビルドから除外」が設定されているプロジェクト内のファイルを気にしないこともわかっています。

于 2012-05-04T05:57:41.070 に答える